为什么onProgressUpdate()在使用独立服务时不会调用Gingerbread?

时间:2012-06-13 08:24:13

标签: android android-asynctask android-service android-4.0-ice-cream-sandwich android-2.3-gingerbread

有点复杂的情况 -

  • 服务被打包为一个单独的APK,除了它在清单中之外别无其他;
  • 服务接受传入请求并使用MessageHandler处理它们;
  • 在一种情况下,处理程序产生如下的AsyncTask:

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

  • ...在ICS中,但不在姜饼中。

它是什么 - 一个错误?

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

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

UPDATE 2012/07/10:将android:targetSdkVersion =“10”更改为android:targetSdkVersion =“15”会在ICS上运行应用时产生相同的效果。到目前为止唯一的工作组合是在API 15上运行的targetSdkVersion =“10”。

1 个答案:

答案 0 :(得分:0)

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

  

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

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

为什么不使用IntentService