![](/img/trans.png)
[英]How to always launch application from splash screen then last left activity
[英]How to save last visited activity and launch it on start
我有MainActivity
这是受欢迎的活动和其他一些活动。
让我们假设Act1
、 Act2
和Act3
。
我希望程序在每次应用启动时自动从MainActivity
直接重定向到上次访问的活动。
无论是Act1
、 Act2
还是Act3
好吧,我尝试从主要活动跳转到上次访问的活动,但没有成功。
这是我已经尝试过但没有用的代码:
主要活动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loadLocale();
setContentView(R.layout.activity_main);
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);
int restoredLevel = prefs.getInt("level", 0);
if (restoredLevel > 0) {
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
}
}
第一幕:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.Act1);
SharedPreferences.Editor editor = getPreferences(Context.MODE_PRIVATE).edit();
editor.putInt("level", 1);
editor.apply();
}
(我只是想根据上次访问的活动更改启动器活动,如果您知道我的问题有更好的解决方案,我将不胜感激)
通过主屏幕上的图标启动时,Android 将始终使用 AndroidManifest.xml 中的 android.intent.action.MAIN 过滤器启动活动。堆栈)。
要实现您所描述的,您可以简单地将最后一个可见活动存储在 SharedPreferences 中,并有一个 Dispatcher 活动根据首选项启动最后一个活动。
因此,在您想要自动重新启动的每个活动中:
@Override
protected void onPause() {
super.onPause();
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
Editor editor = prefs.edit();
editor.putString("lastActivity", getClass().getName());
editor.commit();
}
以及类似于以下内容的 Dispatcher 活动:
public class WelcomeActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("X", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}
评论
-->您可以为 onPause 覆盖创建一个基本 class。 --> Dispatcher 活动显然需要是 android.intent.action.MAIN 动作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.