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(){...};
}
这是一种非常简单的 Activity 管理方式,但是mActivityList的堆内存消耗很大。那么还有另一种方法来管理 Activity
最佳答案
在列表中跟踪 Activity 绝对不是一个好方法。
如果您这样做的唯一目的是方便地完成所有(或任何)它们,我建议您看看 BroadcastReceiver
以下是您可以将其包含到所有 Activity 中的代码 fragment :
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);
}
每当您想要完成所有 Activity 时,请执行此操作:
LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent("actionFinish"));
通过使用 Intent.putExtra() 来操作 Intent 对象,以确定您希望处置哪个 Activity(如果不是全部)。
关于java - 如何更好地管理多项 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19587458/