我正在为iOS,Windows Phone和Android等大多数主流移动操作系统开发应用程序。我的客户请求可以在iOS和WP中实现,但在Android中听起来真的很棘手。
在iOS和WP中,应用程序生命周期由UIApplication
和Application
之类的对象接收的事件控制。
在iOS中,例如applicationDidEnterBackground:
,applicationWillEnterForeground:
,applicationWillTerminate:
等,明确定义应用状态,例如无效,有效和背景,让应用状态管理逻辑真正直接。
在WP中,Application
会收到很好理解的事件,例如启动,停用,已启用和关闭< / strong>这使得确定在每个应用程序状态中应该在逻辑上做什么以保存为恢复应用程序范围的对象模型非常简单。
但在Android中,应用状态管理听起来非常困难,活动的状态更改,例如onCreate
,onRestart
... onDestroy
方法覆盖。我的问题出现在我希望在用户会话过期时控制整个应用程序状态,并且我想将用户重定向到登录活动并关闭其他打开的活动。
关于活动的finish()
,onCreate()
或onRestart()
中的onResume()
来电被Android忽略(根据文档)。
即使我覆盖android.app.Application
并将逻辑放在那里,听起来似乎无法控制开放活动。
我几乎尝试了所有可能的活动启动模式组合(例如SingleTask
和SingleInstance
),但我无法产生iOS和WP中存在的行为。
还有另一个post与此问题相关,可能会更多地澄清我的问题。
确切的问题是,“是否有可能在Android中生成iOS或WP应用程序行为?”
答案 0 :(得分:2)
基本上,一旦“会话”到期,无论用户尝试做什么,您都希望将它们重定向到登录活动,是吗?
假设您有一个可以调用的方法,它告诉您会话是否已过期,为什么不在onResume()等中检查该方法,如果会话已过期,请将用户重定向到登录活动?< / p>
答案 1 :(得分:0)
这里有一个关于您可能感兴趣的申请状态的答案:
Checking if an Android application is running in the background
使用Application,你可以获得onCreate,你可以在这里添加一些逻辑。 所以,是的,它不像iOS那样直截了当,但它是可行的。
如果它只是一个会话状态,请创建一个检查会话状态的基本活动 并继承你的所有活动。
您可以在进入登录页面之前使用Android SDK关闭所有活动,或者......锁定后退按钮。