1

我正在为大多数主要移动操作系统(如 iOS、Windows Phone 和 Android)开发应用程序。我有一个来自我的客户的请求,可以在 iOS 和 WP 中实现,但在 Android 中听起来非常棘手。

在 iOS 和 WP 中,应用程序的生命周期是通过对象喜欢UIApplicationApplication接收的事件来控制的。

在 iOS 中,例如 ,applicationDidEnterBackground:等,明确定义了applicationWillEnterForeground:Inactive ActiveBackground应用程序状态,并使应用程序状态管理逻辑真正简单明了。applicationWillTerminate:

在 WP 中,Application接收很好理解的事件,例如LaunchingDeactivatedActivatedClosing,这使得逻辑上决定在每个应用程序状态下应该做什么以保存为恢复应用程序范围的对象模型变得非常简单。

但在 Android 中,应用程序状态管理听起来非常困难,因为活动的状态变化,例如onCreateonRestartonDestroy方法覆盖。我的问题出现在我想在用户会话过期时控制整个应用程序状态并且我想将用户重定向到登录活动并关闭其他打开的活动。

finish()关于调用活动的onCreate(), onRestart()oronResume()被Android忽略的事实(根据文档)。

即使我覆盖android.app.Application并将逻辑放在那里,听起来控制开放活动也是不可能的。

我几乎尝试了所有可能的活动启动模式组合(例如SingleTaskSingleInstance),尽管我无法产生像 iOS 和 WP 中存在的行为。

还有另一个与这个问题相关的帖子可能会更多地澄清我的问题。

确切的问题是,“是否有可能在 Android 中产生 iOS 或 WP 应用程序行为?”</p>

4

2 回答 2

2

所以本质上,一旦“会话”到期,无论用户尝试做什么,您都希望他们被重定向到登录活动,是吗?

假设您有一个可以调用的方法来告诉您会话是否已过期,为什么不简单地在 onResume() 等中检查该方法,如果会话已过期,请将用户重定向到登录活动?

于 2012-08-17T14:56:54.513 回答
0

这里有一个关于您可能感兴趣的应用程序状态的答案:

检查Android应用程序是否在后台运行

使用 Application,您可以获得 onCreate,您可以在此处放置一些逻辑。所以,是的,它不像 iOS 那样直接,但它是可行的。

如果它只是一个会话状态,请创建一个基础活动来检查会话状态并从中继承所有活动。

您可以在进入登录页面之前使用 Android SDK 关闭所有活动,或者...锁定后退按钮。

于 2012-08-17T15:15:21.450 回答