В моем приложении я использую 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();
Проблема возникает, когда я запускаю действие и закрываю Activity до завершения AsyncTask, если это происходит один раз, кажется, что все в порядке, но после того, как это произойдет во второй раз, AsyncTask только когда-либо попадет в метод onPreExecute () и никогда не завершится снова, пока приложение не будет принудительно остановлено и перезапущено.
Кто-нибудь знает, почему это происходит?