如何使主活动线程影响第二个活动

时间:2017-01-31 19:16:16

标签: java android multithreading android-activity

我的MainActivityThread生成RSA密钥,并返回生成它们所花费的时间(以毫秒为单位)。

当我运行此Thread时,应用会转到第二个Activity

我需要第二个Activity以毫秒为单位接收该时间。

据我了解,一旦你致电startActivity(),父母Activity就会入睡。那么如何同时运行两个?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用LocalBroadcastReceiver。

public class SecondActivity extends AppCompatActivity {

private BroadcastReceiver mRsaReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

        ArrayList<String> rsaList = intent.getStringArrayListExtra("rsaList");
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
    LocalBroadcastManager.getInstance(this).registerReceiver(mRsaReceiver, new IntentFilter("RSA"));
}

@Override
protected void onDestroy() {
    super.onDestroy();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mRsaReceiver);
}

}

来自你的rsa线程

Intent rsaIntent = new Intent("RSA");
rsaIntent.putExtra("rsaList", rsaArrayList);
LocalBroadcastManager.getInstance(context).sendBroadcast(rsaIntent);

答案 1 :(得分:0)

  

据我了解,一旦你启动了Activity(),父活动就会进入休眠状态。那么如何同时运行

你没有。你不需要。由于您在单独的线程上生成RSA密钥,因此代码应完全独立于您的活动(除了在MainActivity中启动)。因此,您需要知道的是,当您的后台任务完成时 - 您可以使用应用内broadcasts或使用GreenRobot's EventBus库等事件总线或使用RxJava