startActivityForResult()不会暂停之前的活动

时间:2017-09-08 07:44:03

标签: android android-activity start-activity

我有活动A,B和C. A一个接一个地开始B和C.问题是B打开了,然后C启动并覆盖B.我希望A等到B完成并返回,但这没有发生。 C在启动B后立即启动,因此用户永远不会看到B.

我正在使用其他帖子中建议的startActivityForResult(),但这没有帮助。

以下是活动A中的代码:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (! pm.isIgnoringBatteryOptimizations(getApplicationContext().getPackageName())) {
    startActivityForResult(new Intent(android.provider.Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS), 1);
}

...

startActivity(new Intent(InitActivity.this, MyAwesomeActivity.class));

2 个答案:

答案 0 :(得分:0)

您必须使用startActivityForResult。您必须基本上执行以下三个步骤:

  1. startActivityForResult(intent_A_to_B, 101);//here 101 is any request code
  2. 只要您在finish()内拨打Activity B,请致电setResult(RESULT_OK)
  3. Activity A中,覆盖onActivityResult

    @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 101) {//this is the request code if (resultCode == RESULT_OK) { startActivity(intent_A_to_C); } }

答案 1 :(得分:0)

您必须使用onActivityResult()链接活动。

A调用B,然后在onActivityResult()中使用resultCode参数来验证B是否正在返回。一旦确认你在B的回调中,那么你打电话给C.所以它更像A开始B,然后B开始C。