是否可以配置Android应用程序,以便如果用户已打开您的应用程序,启动了大量活动,然后返回主屏幕并再次重新启动您的应用程序,而不是进入主要活动,他们将转而采取最高活动在堆栈上(您应用中的最新活动)?
当通过图标在主屏幕上推出,Android将始终启动与活动android.intent.action.MAIN
过滤器在你的AndroidManifest.xml
,除非应用程序已经运行(在这种情况下,它显然会恢复堆栈顶部的活动).
要实现您所描述的内容,您只需将最后一个可见活动存储在其中,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 Dispatcher 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
覆盖创建基类
该调度活动显然需要在android.intent.action.MAIN
行动
它并不复杂.你只需要操纵清单.
AndroidManifest.xm
在这里阅读'android:exported'和'android:alwaysRetainTaskState':
机器人:出口
机器人:alwaysRetainTaskState