0

有点复杂的情况——

  • 服务被打包为一个单独的 APK,在清单中只包含它;
  • Service 接受传入的请求并使用 MessageHandler 处理它们;
  • 在一种情况下,处理程序会生成一个 AsyncTask,如下所示:

    private class XHandler implements MessageHandler {
    
        @Override
        public void handleMessage(Message incoming) {
    
            Bundle b = incoming.getData();
    
            ...            
            new XAsyncTask(...).execute();
        }
    }
    
  • 教科书式的简单异步任务报告进度

  • ...在 ICS 中,但不在 Gingerbread 中。

它是什么 - 一个错误?

AsyncTask 文档说“onProgressUpdate(Progress...),在调用 publishProgress(Progress...) 后在 UI 线程上调用。” 但是,没有用于独立服务的 UI 线程之类的东西,是吗?

服务文档说“服务在托管它的应用程序的主线程中运行,b 默认” - 这是否构成 UI 线程?

更新 2012/07/10:将 android:targetSdkVersion="10" 更改为 android:targetSdkVersion="15" 在 ICS 上运行应用程序时会产生相同的效果。到目前为止,唯一有效的组合是在 API 15 上运行的 targetSdkVersion="10"。

4

1 回答 1

0

我认为您关于 main/ui 线程的问题在此页面上得到了很好的解释:线程

当应用程序启动时,系统会为应用程序创建一个执行线程,称为“main”。这个线程非常重要,因为它负责将事件分派给适当的用户界面小部件,包括绘图事件。它也是您的应用程序与 Android UI 工具包中的组件(来自 android.widget 和 android.view 包的组件)交互的线程。因此,主线程有时也称为 UI 线程。

不确定如何帮助您完成 AsyncTask。你想做什么?您的服务是如何实施的?AsyncTask 完成后你想做什么?

你为什么不使用IntentService

于 2012-06-13T09:49:07.483 回答