В моем приложении я использую AsyncTask при запуске своей деятельности, чтобы получить мелодию звонка определенного контакта.
Он работает нормально, но я заметил, что если приложение останавливается дважды до того, как AsyncTask переходит к методу doInBackground, то при повторном запуске Activity AsyncTask не работает должным образом, а только переходит к методу onPreExecute().
Вот мой код:
Сам AsyncTask:
private class SelectRingtoneTask extends AsyncTask<String, Void, Void> {
// can use UI thread here
protected void onPreExecute() {
Log.d("cda", "Into selectRingToneTask - onPreExecute() - " + selectRingtoneFinished);
}
// automatically done on worker thread (separate from UI thread)
protected Void doInBackground(final String... args) {
Log.d("cda", "Into selectRingToneTask - !!!!!!!!!!!!!!!");
getRingTone();
return null;
}
// can use UI thread here
protected void onPostExecute(final Void unused) {
selectRingtoneFinished = true;
Log.d("cda", "Into selectRingToneTask - onPostExecute - " + selectRingtoneFinished);
}
}
Где я вызываю AsyncTask при запуске:
if(srtt == null){
srtt = new SelectRingtoneTask();
Log.d("cda", "RingTone - " + srtt.getStatus());
}
srtt.execute();
Проблема возникает, когда я запускаю действие и закрываю действие до завершения AsyncTask, если это происходит один раз, кажется, что все в порядке, но после того, как это произойдет во второй раз, AsyncTask когда-либо доберется до метода onPreExecute() и никогда не завершится снова, пока приложение не будет принудительно остановлено и перезапущено.
У кого-нибудь есть идеи, почему это происходит?