安卓服务:生命周期考虑

5
我正在制作一款安卓应用程序,其中将有两个服务,每24小时向用户发送有关其手机使用情况的数据。
用户应该启动应用程序,并切换按钮以启用记录手机使用情况,然后用户应能够正常使用手机,直到再次启动应用程序并禁用切换按钮以停止记录信息。
以下是需要考虑的问题:
1. 服务的生命周期应注意哪些内容? 2. 用户在服务发送数据时如何与手机进行交互?
非常感谢您提供的任何信息,因为我对所有这些都感到有些困惑!
非常感谢大家提前的帮助!
1个回答

8
该服务可以通过设置菜单随时停止。如果Android决定需要当前运行活动的资源,则也可以随时终止它。无论如何,都将调用 onDestroy() ,因此请使用它来存储所需的任何内容。
该服务在后台运行,但通过主UI线程进行。因此,可能会通过服务阻塞手机操作。看起来像是电话锁定了,而实际上是服务正在尝试执行某些操作。任何阻塞过程都应在线程中使用,例如Java计时器、Java线程或AsyncTask。
在任何给定时间只能有一个正在运行的服务版本。但是,如果“myService”已经运行,则调用 startService(myService)将基本上覆盖当前正在运行的服务,并且 onStartCommand()将再次调用。但是,无论如何多少次调用 startService(myService),都需要一次调用 stopService(myService)才能停止它。 stopService(myService)不会停止任何服务,如果该服务绑定到任何内容,则会等待所有绑定被删除才会停止服务。

非常感谢! 但是举个例子,假设用户启用了日志记录,然后杀死了应用程序(关闭它或只是失去焦点并被Android杀死)。 我该如何让应用程序再次启动时获取服务的状态(正在运行还是未运行),并根据此设置按钮的状态为活动或非活动? - noloman
1
我自己从来没有做过这个。不过似乎在这里有讨论过。https://dev59.com/LHRB5IYBdhLWcg3wgXhV。只需在onStartCommand()方法中将持久状态设置为“enabled”,在onDestroy()方法中设置为“disabled”。然后在打开应用程序时可以进行检查。 - DeeV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接