我有一个包含2个活动的应用程序,LogonAct和MainAct。 LogonAct是一个登录活动,我想强制用户每次返回应用程序时都要经历。我在LogonAct上设置了 android:clearTaskOnLaunch =“true”。
当我第一次启动应用程序时,我会经历这一系列的屏幕,
Home -> LogonAct -> MainAct -> Home
然后我按照这个顺序,
LogonAct -> Back -> MainAct
为什么要把我带回MainAct?由于LogonAct具有 android:clearTaskOnLaunch =“true”,因此该活动不应该被关闭。当我从LogonAct点击Back按钮时,我希望能够回到Home。
AndroidManifest.xml中的相关摘录,
<activity android:name=".LogonAct" android:clearTaskOnLaunch="true"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".MainAct"> <meta-data android:name="android.app.default_searchable" android:value=".SearchResults" /> </activity>
我正在使用1.5。
任何帮助表示感谢。
答案 0 :(得分:15)
您可以执行以下操作:
1.在AndroidManifest中设置clearTaskOnLaunch =“true”,在主要活动的声明中
2.必须关闭的活动:
@Override
public void onBackPressed(){
moveTaskToBack(true);
}
所以如果用户按下 - 它会回到主屏幕 如果用户再次启动应用程序 - 任务堆栈清除,他进入根主要活动
答案 1 :(得分:11)
android:clearTaskOnLaunch
的文档提到,只要从主屏幕重新启动[活动],此属性就适用。“
但是,在您的情况下,您按 Home 按钮返回主屏幕,而不是按 Back 按钮。这意味着您的应用程序实际上并未重新启动,因为MainAct
未“完成”。仅当您按返回时(或者如果Android杀死任务以节省资源等),则会发生这种情况。
由于您的应用程序中只有两个活动,因此您可以在MainAct
上设置android:noHistory
属性,从而确保用户永远不会返回该属性并且必须通过LogonAct
。
顺便说一句,强迫用户每次离开应用程序时都会重新登录(例如,当他们接到电话时),这似乎有点烦人。
您可以在应用程序的持久存储中保留具有超时的会话令牌,或者使用服务保持网络连接打开,如果这是您的应用程序的工作方式 - 当然这取决于您和您的要求。 :)