gpt4 book ai didi

android - 请解释一些 Android 服务概念

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:34 25 4
gpt4 key购买 nike

我刚刚接触 Android 服务,但我有很多疑问。这里有一些问题。在开始之前,请注意我已经阅读了那些页面 Android Services (official) Bounded Services (official)加上我的语言的内部类理论。请耐心等待,我还是有点困惑。

1) 首先,Service 与 AsyncTask 的区别主要在于,如果应用程序暂停(即用户正在观看另一个应用程序),它也会继续运行;在这种情况下,AsyncTask 会停止。可以吗还是我错了?2) 服务运行在通过 startService() 启动它的 Activity 的同一个线程中。为了不影响 Activity 的性能,我必须为该服务创建一个单独的线程,例如实现 Runnable 接口(interface)。另一种方法是创建一个扩展 IntentService 的服务,它会自动为该服务提供一个新线程:在任何 onHandleIntent() 调用时都会创建一个新线程。

现在,让我们看看我的具体问题。我需要创建一个将被许多 Activity 使用的服务:他的任务是每 60 秒连接到服务器数据库并检查新闻。如果找到新闻,通知有新新闻(如果我们在 MainActivity 上)或显示新新闻的标题(如果我们在新闻阅读器中)。我应该如何编码?我创建了一个实例化 NewsService 并立即调用 startService() 的 MainActivity。另一方面,我有 NewsService extends IntentService,它(在调用 onHandleIntent 时创建一个新线程?)并寻找新消息。使用 IntentService 是个坏主意吗?我意识到无限期地启动服务调用 startService() 会非常丑陋。在这个练习开始时,我认为这是一个很好的解决方案,因为它会自动创建一个新线程并使服务实现变得简单。但是现在有点疑惑(不知道有没有消息!MainActivity怎么知道的?还有title怎么取的)

这应该通过一个普通的 extends Thread 类来完成,它在它的 run() 方法中创建一个无限循环,每 60 秒检查一次新闻,如果有新的,从远程数据库读取标题并更新 Activity 按钮/意见。那么如果应用程序将被用户关闭,服务也将被关闭。但问题是,如果我实例化这样的类,当 MainActivity 暂停或停止时,它的工作将停止,并且其他 Activity (在本例中为 NewsReader)无法获得任何更新,因为新线程目前没有获得新闻。所以我需要一个服务。

我希望它是清楚的。我应该如何以正确的方式实现解决方案?请突出显示我文本中的所有错误,我真的需要学习 :D

最佳答案

您似乎已经正确理解了所有内容。

对于您的具体问题,我建议如下:

  • 使用 AlarmManager 安排您的服务。不要让 Service 在不必要时运行。

  • 使用Broadcast Intent 获取新消息。所有 Activity 都必须有一个内部 BroadcastReceiver 来监听服务的 Broadcast Intent 并做出相应的 react 。

关于android - 请解释一些 Android 服务概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com