【发布时间】:2012-08-17 23:15:21
【问题描述】:
我正在为大多数主要移动操作系统(如 iOS、Windows Phone 和 Android)开发应用程序。我有一个来自我的客户的请求,可以在 iOS 和 WP 中实现,但在 Android 中听起来非常棘手。
在 iOS 和 WP 中,应用程序生命周期是通过 UIApplication
和 Application
等对象接收的事件来控制的。
在iOS中,例如applicationDidEnterBackground:
、applicationWillEnterForeground:
、applicationWillTerminate:
等,明确定义Inactive、Active和Active等应用状态strong>背景并让应用状态管理逻辑非常直接。
在 WP 中,Application
接收很好理解的事件,例如 Launching、Deactivated、Activated 和 Closing > 这使得逻辑上决定在每个应用程序状态下应该做什么以保存为恢复应用程序范围的对象模型变得非常简单。
但在 Android 中,应用程序状态管理听起来很困难,因为活动的状态变化,例如 onCreate
、onRestart
…onDestroy
方法覆盖。我的问题出现在我想在用户会话过期时控制整个应用程序状态并且我想将用户重定向到登录活动并关闭其他打开的活动。
关于在活动的onCreate()
、onRestart()
或onResume()
中调用finish()
被Android 忽略的事实(根据文档)。
即使我覆盖android.app.Application
并将逻辑放在那里,听起来也无法控制打开的活动。
我几乎尝试了所有可能的活动启动模式组合(例如SingleTask
和SingleInstance
),尽管我无法产生像 iOS 和 WP 中那样的行为。
还有一个与此问题相关的post 可以更清楚地说明我的问题。
确切的问题是,“是否有可能在 Android 中产生 iOS 或 WP 应用程序行为?”
【问题讨论】:
-
“关于在 Activity 的 onCreate()、onRestart() 或 onResume() 中调用 finish() 被 Android 忽略的事实(根据文档)。” -- 我不知道你在哪里读到的,当然不是这样。
-
对不起。恕我直言,情况确实如此。参考developer.android.com/reference/android/app/Activity.html,如果你仔细注意activity的生命周期,一个activity在onCreate()、onRestart()、onStart()等方法中是无法杀死的,...请看那里的表格。当然,虽然它说在 onCreate() 中不可能杀死一个活动,但它确实做到了。
-
@anonim.developer:我认为您在这种情况下误解了“可杀死”的含义。通过紧跟在表格后面的段落,我相信它只是意味着“系统无法杀死”,而不是“应用程序的开发人员无法通过 finish() 杀死”。这意味着您可以依靠在那些“无法杀死”的方法中完整执行您的代码。