В случае, если Activity
был разрушен, но AsyncTask
все еще имеет ссылку на объект, есть ли способ прямого запроса к указанной (уничтоженной) активности, чтобы определить, действительно ли Activity
действителен?Могу ли я определить, действительна ли ссылка на действие?
ответ
В onDestroy()
способе активность, установить флаг, указывающий, что активность была разрушена.
Кроме того, в AsyncTask
добавьте WeakReference
к Activity
вместо обычной ссылки.
В onPostExecute()
способе AsyncTask
, активность все еще жив, если WeakReference
все еще имеет значение, а сама Activity
все еще имеет флаг установлен в ложь.
Попробуйте держать WeakReference
в вашей деятельности.
WeakReference<Activity> ref = new WeakReference<Activity>(activity);
… … …
Activity activity = ref.get();
if (activity != null) {
// DO SOMETHING
}
В API Android я не вижу никаких гарантий, что слабая ссылка на действие будет гарантировать сохранение, когда действие будет действительным, и что слабая ссылка будет сведена к нулю при уничтожении Activity. У вас есть конкретная причина полагать иначе? –
Чтобы избежать дублирования, см. [Полный ответ] (http://stackoverflow.com/a/11834991/716075) * разработчиком Android *. – StenaviN
- 1. Как проверить, действительна ли ссылка на объект?
- 2. Программно проверить, действительна ли ссылка на YouTube?
- 3. Определить, действительна ли страница в JavaScript - ASP.NET
- 4. Определить, действительна ли маска сети в Java
- 5. Как определить, действительна ли строка JSON?
- 6. Ссылка на AnyCpu x64 действительна?
- 7. iphone: могу ли я определить тип URL?
- 8. Могу ли я определить, что вызвало сборку?
- 9. Могу ли я использовать href в css (ссылка на url)
- 10. Могу ли я улучшить это действие контроллера?
- 11. проверить, действительна ли дата.
- 12. Проверьте, действительно ли BitmapData действительна
- 13. Тестирование, если ссылка на данный объект действительна
- 14. Как определить, работает ли ссылка?
- 15. Могу ли я передать параметр, как ссылка
- 16. В Swift можно определить, действительна ли CLLocation или нет?
- 17. Ссылка не действительна
- 18. PHP: определить, действительна ли строка, сопоставляя открытый и закрывающий теги
- 19. Могу ли я перенаправить с global.asax на действие контроллера?
- 20. Могу ли я установить точки останова на действие EarlGrey?
- 21. Могу ли я сделать «пост» действие на успех Ajax
- 22. Могу ли я изменить действие класса формы на сборку?
- 23. Как я могу определить, уникален ли объект?
- 24. Как я могу определить, работает ли «встроенный»?
- 25. Могу ли я определить размер для DefaultTableModel?
- 26. Могу ли я определить несколько LinearLayouts массивом?
- 27. Как проверить, действительна ли дата
- 28. Могу ли я определить несколько статических блоков?
- 29. Могу ли я определить IE6 с PHP?
- 30. Могу ли я определить метод внутри метода?
Я не вижу никаких гарантий в Android API, что слабая ссылка на Activity будет гарантировать сохранение, когда действие будет действительным, и что слабая ссылка будет сведена к нулю при уничтожении Activity. У вас есть конкретная причина полагать иначе? –
Если действие освобождено, слабое указание скоро будет отменено. такая вещь должна произойти только после уничтожения активности, поскольку это последний шаг жизненного цикла деятельности. конечно, если есть еще ссылки на активность, флаг, о котором я писал, будет использоваться, поскольку слабая ссылка все равно укажет на эту активность. вы можете прочитать о weakReference здесь: http://developer.android.com/reference/java/lang/ref/WeakReference.html и о жизненном цикле активности здесь: http://developer.android.com/reference/android/app/ Activity.html –
«скоро будет нулевым» .. недостаточно. это не дает достаточно подробных сведений о состоянии деятельности – Vlad