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);
    }