У меня есть asynctask, выполненная в onCreateView во фрагменте. Когда экран выключен и каким-то образом фрагмент должен отображаться, начинается асинтеза, но с isCancelled() - true. Я использовал PARTIAL_WAKE_LOCK, но проблема не решена. Спасибо заранее.Android AsyncTask выполняет с isCancelled() = true, когда экран выключен
Вот пример кода
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
activity = getSherlockActivity();
context = activity.getApplicationContext();
view = inflater.inflate(R.layout.main, container, false);
DownloadXMLTask = new DownloadXML(getActivity());
DownloadXMLTask.execute(file);
return view;
}
private class DownloadXML extends AsyncTask<File, Integer, String> {
private Activity activity;
public DownloadXML(Activity activity) {
this.activity = activity;
}
protected void onPreExecute() {
... Do stuff ...
}
protected String doInBackground(File... files) {
// Check if the task is cancelled
if (isCancelled()) { return null; }
... Do stuff ...
... Do stuff ...
... Do stuff ...
return null;
}
protected void onPostExecute(String result) {
... Do stuff ...
}
@Override
protected void onCancelled() {
... Do stuff ...
}
}
Вы описали, что такое поведение, но не то, что вы действительно хотите. –
Спасибо за комментарий. Мне нужно выполнить задачу, как ожидается, так же, когда экран включен. Его следует отменить только тогда, когда пользователь вызывает отмену. – adamioan
@adamioan: Когда «экран выключен», ваша «активность» и любые «фрагменты» больше не будут в рабочем состоянии. Если вы хотите выполнять фоновое редактирование, например, загрузки, используйте «Сервис». – Squonk