有没有办法保持活动实例的引用?

时间:2017-09-25 12:15:48

标签: android android-activity

有没有办法保留活动实例的引用?

想象一下,我有以下代码:

    Intent intent=new Intent(this, OBDActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |  Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);

    Activity openedActiviy = ????

现在我想保留在某个地方打开的OBDActivity的实例,因为我想稍后完成它。而不是OBDActivity它可以是任何其他活动,实际上我想要一个保持最后一次打开活动的变量。

openedActiviy.finish();

任何想法?

3 个答案:

答案 0 :(得分:1)

我认为你应该使用广播。您在新活动中注册广播接收器,然后从前一个发送广播。 https://developer.android.com/guide/components/broadcasts.html

答案 1 :(得分:1)

保持活动的参考是一个坏主意。它可能会导致内存泄漏。 相反,您可以在活动中使用广播监听器。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="" id="dropdown">
  <option value="test1">TEST1</option>
  <option value="test2">TEST2</option>
  <option value="test3">TEST3</option>
  <option value="test4">TEST4</option>
  <option value="test5">TEST5</option>
</select>

<div id="show">
  TEST SHOW
</div>

答案 2 :(得分:0)

任何活动完成时使用 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);