当launchMode为singleTask时,强制活动使用startActivity调用onCreate()

时间:2018-09-29 08:00:45

标签: java android android-activity

我的活动启动模式设置为android:launchMode="singleTask"

当我调用startActivity()从另一个活动中启动它时,它从上一个状态开始处于顶部。

场景:

活动A启动活动B

活动B启动活动A

活动A带有旧数据

我可以使用哪些标志来强制其启动并调用onCreate()

知道我必须使用android:launchMode="singleTask"进行维护 正常的应用程序流程,无法交换到android:launchMode="singleTop"

谢谢

编辑(1):

launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

android:launchMode="singleTask"

它解决了我要问的问题,但创建了一个最糟糕的问题

现在,当我完成活动A(由活动B发起的活动B由活动A发起的活动)时,我发现自己遇到的是我正在使用的上一个应用程序,该应用程序应在该应用程序上到达活动B。

1 个答案:

答案 0 :(得分:4)

尝试使用onNewIntent来了解Activity A已重新启动。因此,当启动模式为onCreate时,应同时在onNewIntentsingleTask中进行初始化。

活动A:

public class ActivityA extends AppCompatActivity {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        init();
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        init();
    }

    private void init(){
        // do initialization
    }

}