android:Activity需要最小化或隐藏,如何保持活着

时间:2011-05-16 07:21:53

标签: android android-activity kill

我有一个应用程序,其活动的目的是连接到服务器,保持和监视连接,并在断开连接时通知用户。 Activity具有其他对话框及其UI以及连接和监视连接时运行的服务。服务仅从te UI线程启动和停止。

我的查询:建立连接后,服务将启动,活动将被隐藏。从生命周期我可以理解隐藏它将进入onPause()阶段。然后,如果设备需要内存,它可以杀死我的活动。如果连接没有建立我可以让它被杀死,但如果建立了,那么我不希望它在没有用户知情的情况下被杀死。

如何隐藏活动? 怎么能阻止它被杀?或者,如果它被杀死如何通知用户相同。 如果活动被杀死将成为服务的条件。我不认为他也会被杀死。这在重新启动应用程序时会变得不匹配。

编辑信息: 谢谢@indyfromoz和Aleadam, @Aleadam,我查看了所有这些链接,这有助于我理解和发展我的服务。 我将servie绑定到Activity,并且服务具有返回到Activity的存根,并且根据需要,服务将消息发送到Actiivty - 在某些msgs上,仅活动将通知用户,但服务会将消息通知给活动。其次,另一个AsyncTask也在运行,它也会定期通知活动。如果任何连接丢失,Activity会处理以再次启动该任务/服务,通知用户。到目前为止,我已经管理了这么多,但我只关心杀死活动。服务和ASyncTask将运行并通知用户,但UI不会一直显示在顶部,因此将处于onPause阶段。如果在低内存情况下系统杀死活动呢?

您是否试图说如果服务绑定并且通知将继续,则活动不会被杀死,因为它是活动的但不可见?我有点困惑,担心并且不明白是他们处理我申请的这个阶段的任何需求。如果是这样,怎么样?为了更好地理解,我给出了以下应用程序的流程。

流程:   活动开始   一些输入,验证,UI等   开始&绑定服务 - startService(bindIntent); bindService(bindIntent,sevConn,flag);         服务开始/有限成功?启动AstncTask:重新尝试&通知(重试限制)

AsyncTask开始   现在的用户界面不是最重要的,背景工作正在进行中

AsyncTask& Service提供由Activity中的处理程序处理的通知。在任何sp msg显示给用户并可能显示UI返回。

由于

1 个答案:

答案 0 :(得分:1)

服务可以检查活动是否正在运行(通过IBinder)并启动一个新活动,以防它被杀死请参阅我的回复here以获取有关此教程的链接。

另一种可能性是创建一个Application对象,该对象引用了Activity和Service,您可以使用它来管理您的需求。应用程序比活动更不容易被杀死。无论如何,如果它被杀死,它都归结为重启你的Activity。使用saveInstance()从Activity中保存所需的任何数据(参见this question