Android:如何通过长时间运行的后台服务触发屏幕 UI 事件(例如来电屏幕)?

Posted

技术标签:

【中文标题】Android:如何通过长时间运行的后台服务触发屏幕 UI 事件(例如来电屏幕)?【英文标题】:Android: How to trigger screen UI events (e.g incoming call screen) by a long running background service? 【发布时间】:2013-12-17 08:38:47 【问题描述】:

我对安卓很陌生。我正在构建一个使用 android smack 库与我的 XMPP 服务器通信的应用程序。我能够完美地发送和接收消息但是我想要的是在后台运行这个整个发送和接收消息代码到一个长期运行的进程,并且在接收到某个消息时我想启动一个屏幕(类似于传入的android的呼叫屏幕)无论用户在他的智能手机上做什么,即当运行消息服务的活动未打开时(以类似的方式,当您接到来自viber联系人的来电并且您面对屏幕时,即使您显然没有打开 viber 应用程序)。 关于如何做到这一点的任何想法? 经过研究,我有一些想法,但似乎并没有找到正确的方法并将所有和平粘合在一起。

提前致谢

【问题讨论】:

【参考方案1】:

你可以使用intentService与mainThread通信

这里是intentservice和service的一个基本例子

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

服务示例

http://www.vogella.com/articles/AndroidServices/article.html

这是官方文档

http://developer.android.com/reference/android/app/IntentService.html

【讨论】:

好的,这非常适合将数据处理从 UI 线程中移开,并在后台进程中进行大量工作。我也了解如何使用意图服务将数据传递回主线程并利用它,但是我仍然没有得到的是如何在触发某个事件并拥有这个时显示一个弹出窗口或某个屏幕无论主要活动是打开还是关闭,屏幕/窗口都会出现(例如,当您在 viber 上收到短信时会发生什么情况。即使您的手机处于待机模式,您也会收到一个弹出窗口)。任何帮助将不胜感激并感谢 如果你想按照你说的做,那么你可以使用轮询或套接字连接在这里看到这个答案***.com/questions/7433774/android-sockets-vs-polling 这可能会帮助你***.com/questions/6052426/…

以上是关于Android:如何通过长时间运行的后台服务触发屏幕 UI 事件(例如来电屏幕)?的主要内容,如果未能解决你的问题,请参考以下文章

在Android O中运行后台运行Intentservice

Android异步服务调用策略

Android-startService后台运行

在 iOS 中实现长时间运行的后台任务

如何使用气流检查长时间运行的 http 任务的状态?

Android 使用Alarm机制创建长时间在后台运行的定时任务