0
public class MyApplication extends Application {
  ArrayList<Activity> mActivityList = new ArrayList<Activity>();

  public void addActivity(Activity a){

     mActivityList.add(a);
   } 

   public void removeActivity(Activity a){
      for(...){
         ...name equals..
         a.finish();
      }

   }

    public void removeAll(){
       for(){
        ...
        a.finish();
        }
   }

    public Activity getActivity(){...};

}

这是管理活动的一种非常简单的方法,但是 mActivityList 的堆内存成本很高。那么还有另一种管理活动的方法吗

4

1 回答 1

1

在列表中跟踪活动绝对不是一个好方法。

如果您这样做的唯一目的是方便地完成所有(或任何),我建议您查看 BroadcastReceiver

以下是您可以包含在所有活动中的片段:

private BroadcastReceiver finishBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        finish();
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Start listening to any broadcast "tagged" with action name actionFinish.
    LocalBroadcastManager.getInstance(this).registerReceiver(finishBroadcastReceiver,
            new IntentFilter("actionFinish"));
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Stop listening to broadcast when the activity is destroyed.
    LocalBroadcastManager.getInstance(this).unregisterReceiver(finishBroadcastReceiver);
}

每当您想完成所有活动时,请执行此操作:

LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent("actionFinish"));

通过使用 Intent.putExtra() 来操作 Intent 对象,以识别您希望处置的 Activity(如果不是全部)。

于 2013-10-25T15:31:58.210 回答