MainActivity
已将launchMode
设置为singleTask
。如果我从ActivityB
启动MainActivity
,然后将应用程序置于后台并从应用程序屏幕启动我的应用程序,则无法正常恢复。 ActivityB
自动完成并MainActivity
恢复。我希望ActivityB
能够恢复。为什么会发生这种情况,我该怎么做才能使其正常工作?没有singleTask
标志就可以正常工作但我需要那个标志用于其他目的。
顺便说一下,我的应用程序可以从最近的应用程序屏幕中正确恢复。
答案 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:我还没有编译它,代码可能在编译时出错。但共享偏好可以解决您的问题。