У меня есть класс, который читает журнал вызовов.Это может длиться несколько минут.Поэтому я должен использовать поток, если я не хочу блокировать поток графического интерфейса.
В C # я запускаю поток, уведомляю поток графического интерфейса с событием о готовности данных и передаю данные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;
}
}
}
Пока работает нормально, но я не могу отменить поток таким образом.Я мог бы отменить задачу, но я должен проверить в цикле сбора данных класса calllog, вызывается ли onCancelled, но эта функция известна только в классе GetDataTask, а не в CallLog.
Есть ли способиспользовать AsyncTask и сделать "внешние" классы отменяемыми?Или я переключился на темы и события?Как лучше в этой ситуации?