总是在后台运行线程/进程?

Posted

技术标签:

【中文标题】总是在后台运行线程/进程?【英文标题】:Running a thread/process in the background always? 【发布时间】:2013-03-03 22:41:51 【问题描述】:

目前我还不是 100% 了解 android 生命周期。我想运行一个进程/线程,我不确定这里的正确术语,手机一直处于开启状态,并且它在没有用户激活应用程序的情况下运行。对于我正在开发的游戏的一部分,我想定期将用户的粗略位置传输回服务器,并从服务器获取一些数据。在android中解决这个问题的正确方法是什么?

【问题讨论】:

【参考方案1】:

您必须查看 Android 服务。 here你可以找到关于这个话题的很好的介绍。

还必须使用BroadcastReceiver 来检测用户何时插入/拔出耳机。已经是关于这个here的话题了。

【讨论】:

【参考方案2】:

如果这个后台进程所做的工作不仅仅是上传位置,@niculare 的答案确实是正确的。

但是,如果这个后台进程唯一能做的就是上传,那么还有其他更省电的方法来做这件事。您可以创建BroadcastReceiver 以从系统接收位置更新并进行上传。如果你在上传前需要一些小的处理,你甚至可以从 BroadcastReceiver 中启动一个服务,然后服务将处理数据,上传完成。

此外,对于这两种情况,您可能需要 BroadcastReceiver 来接收 OnBoot 广播,以了解移动设备刚刚启动并注册这些内容。

小更新 您使用this listener 注册this method 以获取位置更新

【讨论】:

感谢您提供额外信息,您说得对,我也需要一个 BroadcastsReceiver。

以上是关于总是在后台运行线程/进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios中每n秒连续在后台线程中运行一个进程

在同一个后台线程上运行 FMDB 进程?

程序进程与线程

如何检查Android后台服务线程是不是正在运行

如何在 iOS 的后台线程中运行 XMPP Room Join & Invite 进程

查看后台运行的命令 、进程状态、关闭前后台命令