我正在尝试重新打开图标按下的上一个活动。但是当我从main中删除launchMode SingleTask时,它从启动开始。
以下是该方案 - A = Splash,B = Activity1,C = Activity 2。
我想在图标按下启动C.
开始时 A ----> B ----> C(这里按下主页图标) 点击图标它运行A但我想要C。任何人都可以解决这个问题吗?
启动C-
Intent urlIntent = new Intent(this,C.class);
urlIntent.putExtra("stt",Str);
startActivityForResult(urlIntent,REQUEST_CODE);
答案 0 :(得分:3)
案例I.按主页按钮后,检查您的应用是否处于后台。如果是,那么它应该打开活动C.
案例II。如果你的应用程序因内存不足而被杀死,那么它将从启动器活动开始,即活动A.
我也遇到过这个问题。出现此问题的原因是设备设置已更改。如果用户启用“不保留活动”,则在您按home或启动新活动时,所有活动都将被销毁。
注意:我使用默认启动模式
答案 1 :(得分:0)
您的应用始终从Activity
开始,并在Manifest.xml中使用过滤器intent.action.MAIN
。
如果您的应用程序已经运行,那么下次应用程序启动时,它将自动从上次打开的活动中恢复。
现在,如果您的应用被杀或被删除,那么您可以在活动恢复或暂停时将活动存储在SharedPreferences
中,并在下次开始时检查您的情况下的Activity 'A'
。是您在Activity
中存储SharedPreferences
名称时最后一次打开的活动。
示例:
如果您有三项活动A - > B>> C
将名称存储在所有活动的onPause()
中,使用SharedPreference
来存储其名称:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("Pref", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("lastOpenedActivity", getClass().getName());
editor.apply();
}
在你的Splash Activity A
中,使用此偏好设置为onCreate()
中的checfk -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class lastActivity;
try {
SharedPreferences prefs = getSharedPreferences("Pref", MODE_PRIVATE);
lastActivity = Class.forName(prefs.getString("lastOpenedActivity", ParentActivity.class.getName()));
} catch (ClassNotFoundException ex) {
lastActivity = ParentActivity.class;
}
startActivity(new Intent(this, lastActivity));
this.finish();
}