【问题标题】:Should I do work in a separate thread if my android app has no UI?如果我的 android 应用没有 UI,我应该在单独的线程中工作吗?
【发布时间】:2010-11-25 16:04:35
【问题描述】:

我的应用程序本质上是一个在启动时启动的服务(由启动完成的接收器),应该定期收集数据,通过网络发送数据,然后进入睡眠状态(可能使用 AlarmManager)。它没有任何活动 - 没有任何 UI。

是否有任何理由产生额外的线程来执行应用程序逻辑? 如果没有,我应该在哪里执行逻辑?在 OnStart 方法中?

【问题讨论】:

    标签: android multithreading android-service


    【解决方案1】:

    是否有任何理由产生额外的线程来执行应用程序逻辑?

    当然。如果在 5-10 秒内没有响应,您的服务将被终止。在这段时间内没有任何东西可以占用主应用程序线程。

    我推荐IntentServiceAlarmManager 一起使用。特别是,如果您希望设备在您正在做的事情时保持清醒,您可以考虑我的WakefulIntentService

    另外,关于“没有任何 UI”,如果您打算通过 Android Market 分发这个应用程序,请记住用户似乎不喜欢没有 UI 的应用程序。他们安装它,当启动器中没有图标时会感到困惑,并给你一星评级。即使您不需要 UI 来进行实际操作,您也可以考虑至少在启动器中进行一些活动,显示文档,可能是正在完成的工作日志,允许调整工作频率等。

    【讨论】:

    • 感谢您出轨的回答!一个澄清我很感激 - 当你说“未能在 5-10 秒内响应”时,你的意思是如果 onStart 没有在 5-10 秒内返回,那么服务将被终止?
    • @rony l:该规则适用于任何生命周期方法(onCreate()onStart()/onStartCommand()onBind()onDestroy())。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2017-11-29
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多