使用singleTask标志时,应用程序将恢复为错误的活动

时间:2016-08-22 13:16:10

标签: android android-activity

我的应用中的

MainActivity已将launchMode设置为singleTask。如果我从ActivityB启动MainActivity,然后将应用程序置于后台并从应用程序屏幕启动我的应用程序,则无法正常恢复。 ActivityB自动完成并MainActivity恢复。我希望ActivityB能够恢复。为什么会发生这种情况,我该怎么做才能使其正常工作?没有singleTask标志就可以正常工作但我需要那个标志用于其他目的。

顺便说一下,我的应用程序可以从最近的应用程序屏幕中正确恢复。

2 个答案:

答案 0 :(得分:0)

在LAUNCHER活动中使用以下代码。

@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (!isTaskRoot()) {
    finish();
    return;
}

// Rest of your onCreate code goes here
}

答案 1 :(得分:0)

活动B已关闭,因为它是从活动A启动的,这是android的正常行为,因为活动A需要重新启动(singleTask),所有相关实例都将被杀/完成。

所以,你可以做的是实施shared-preference

你的活动A应该是这样的:

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //// read share preference
    SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
    int defaultValue = getResources().getInteger("MYSHARE_PRFERENCE");
    int isOpened = sharedPref.getInt("IS_ACTIVITY_B_ALREADY_OPENED", defaultValue);

    if (isOpened == 1)
    {
        //resume activity B
        startActivity(new Intent(MainActivity.this, ActivityB.class));
    }       
    ////

    findViewById(R.id.text).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(MainActivity.this, ActivityB.class));

            //// write on share preference
            SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putInt("IS_ACTIVITY_B_ALREADY_OPENED", 1);
            editor.commit();
            ////
        }
    });
}

}

P.S:我还没有编译它,代码可能在编译时出错。但共享偏好可以解决您的问题。

相关问题