线程和事件 - 最好的方法是什么?

时间:2011-07-06 06:27:55

标签: android multithreading events android-asynctask

我有一个读取calllog的类。这可能持续几分钟。如果我不想阻止gui线程,我必须使用一个线程。

在C#中,我启动一个线程,在数据准备就绪时通过事件通知gui线程,并在事件中将数据提供给gui。

但我应该如何用android做到这一点?到目前为止我读到的内容告诉我,最好在Android上使用AsyncTask。我以这种方式使用它(伪代码):

class MyClass{
   private myClassVariable;

   private coid startTask(){
      GetDataTask data = new GetDataTask();
      data.execute(varibale);
   }

   private void displayData{
      doAnythingUsefullHere;
   }


   class GetDataTask extends AsyncTask<variables>{
      protected variable doInBackground(variable){
         return = CallLog.getData();
      }

      protected void onPostExecute(variable){
         myclassVariable = variable;
         displayData;
      }
   }
}

到目前为止工作正常,但我无法以这种方式取消线程。我可以取消任务,但是如果调用了onCancelled,我必须检查calllog类的数据收集循环,但是这个函数只在类GetDataTask中而不是在CallLog中已知。

有没有办法使用AsyncTask并使“外部”类可取消?或者我切换到线程和事件?在这种情况下,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

这可能是您要找的:Ideal way to cancel an executing AsyncTask