[英]Threads and Events - what's the best way?
我有一个读取呼叫日志的 class。 这可能会持续几分钟。 所以如果我不想阻塞gui线程,我必须使用一个线程。
在 C# 中,我启动了一个线程,当数据准备好时用事件通知 gui 线程,并在事件中将数据提供给 gui。
但是我应该如何使用 android 呢? 到目前为止,我读到的内容告诉我,最好将 AsyncTask 与 android 一起使用。 我以这种方式使用它(伪代码):
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;
}
}
}
到目前为止工作正常,但我不能以这种方式取消线程。 我可以取消任务,但我必须在调用日志 class 的数据收集循环中检查是否调用了 onCancelled,但此 function 仅在 class GetDataTask 中已知,而不在 CallLogTask 中。
有没有办法使用 AsyncTask 并使“外部”类可以取消? 还是我切换到线程和事件? 在这种情况下最好的方法是什么?
这可能是您正在寻找的: 取消正在执行的 AsyncTask 的理想方法吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.