活动中有许多按钮。单击每个按钮时,将打开不同的活动。如果我们关闭应用并再次重新打开它,我们必须获得最后一次打开的活动。
答案 0 :(得分:0)
要实现您所描述的内容,您只需将最后一个可见活动存储在 SharedPreferences 中,然后根据首选项启动上一个活动的调度程序活动。
在您想要自动重新启动的每项活动中:
@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 Dispatcher extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Class<?> activityClass;
try {
SharedPreferences prefs = getSharedPreferences("XYZ", MODE_PRIVATE);
activityClass = Class.forName(
prefs.getString("lastActivity", Activity1.class.getName()));
} catch(ClassNotFoundException ex) {
activityClass = Activity1.class;
}
startActivity(new Intent(this, activityClass));
}
}
你也可以在你的清单中尝试这个(也可以检查一下),
<activity
android:name=".MainActivity"
android:alwaysRetainTaskState="true"
android:exported="true"
.
.
.
注意:Dispatcher活动显然需要是android.intent.action.MAIN操作
如果上述方法无效,请尝试以下方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
// Activity was brought to front and not created,
// Thus finishing this will get us to the last viewed activity
finish();
return;
}
// Regular activity creation code...
}