是否有任何方法可以保留活动实例的引用?
想象我有以下代码:
Intent intent=new Intent(this, OBDActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
Activity openedActiviy = ????
现在,我想保留在某个地方打开的obdactivity实例,因为我想以后要完成它。它可能是任何其他活动,实际上我想拥有一个保持最后开放活动的变量。
openedActiviy.finish();
有什么想法?
我认为您应该使用广播。您在新活动中注册广播接收器,然后从上一台发送广播。https://developer.android.com/guide/components/broadcasts.html
这是一个不好的主意。它可能导致内存泄漏。相反,您可以在活动中使用广播听众。
private class ProgressBroadCast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(some_condition){
finish();
}
}
}
使用 broadcastreceiver 当任何活动完成
时实施广播接收器
BroadcastReceiver myBroadCastReceiver = new BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //here you can finish activity or whatever you want. } };
注册广播接收器
LocalBroadcastManager.getInstance(MainActivity.this).registerReceiver(myReceiver, new IntentFilter("com.test.MY_ACTION"));
活动完成时发送广播
Intent i = new Intent("com.test.MY_ACTION"); LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(i);