1、如何方便知晓当前Activity?
可以不看代码根据当前界面就知道界面所在Activity的写法:
建立BaseActivity,继承自Activity,在BaseActivity的OnCreate方法中打印当前Activity的名字。之后使项目中所用Activity继承BaseActivity。
public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("BaseActivity",getClass().getSimpleName()); } }
2、如何管理应用中的Activity?
(1)建立一个集合类对应用中所有Activity进行管理:
class ActivityCollector{ public static List<Activity> activitys=new ArrayList<Activity>(); //添加activity public static void addActivity(Activity activity){ activitys.add(activity); } //移除activity public static void removeActivity(Activity activity){ activitys.remove(activity); } //结束掉所有activity public static void finishAll(){ for(Activity activity:activitys){ if(!activity.isFinishing()){ activity.finish(); } } }
(2)在之前的BaseActivity中加入:
public class TestActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("BaseActivity", getClass().getSimpleName()); ActivityCollector.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); } }
在需要完全退出程序时只需要调用ActivityCollector.finishAll()即可。
3、如何最佳的启动一个Activity?
当要从当前Activity跳转到Activity b需要携带一些数据时,以下方法可以方便知道Activity b需要的数据有哪些:
在要跳转到的Activity中加入如下方法,当需要进行页面跳转时不直接使用intent跳转而是调用目标Activity中的actionStart方法即可。
public static void actionStart(Context context,Object ...data1){ Intent in=new Intent(context,TurnToActivityName); in.putExtra("param1",(String)data1[0]); context.startActivity(in); }