有什么方法可以保留活动实例的参考



是否有任何方法可以保留活动实例的引用?

想象我有以下代码:

    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 当任何活动完成

  1. 实施广播接收器

    BroadcastReceiver myBroadCastReceiver = new BroadcastReceiver {
       @Override
       public void onReceive(Context context, Intent intent) {
         //here you can finish activity or whatever you want.
       }
    };
    
  2. 注册广播接收器

    LocalBroadcastManager.getInstance(MainActivity.this).registerReceiver(myReceiver, new IntentFilter("com.test.MY_ACTION"));
    
  3. 活动完成时发送广播

    Intent i = new Intent("com.test.MY_ACTION");
    LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(i);
    

最新更新