Давайте предположим, что у меня есть activity
проблема с проведением ссылки на диалоговое
public class ClassA extends Activity {
protected void onCreate(Bundle savedInstanceState)
{
....
}
в onCreate
я создать объект класса, который простирается AsyncTask
:
MyAsynctask classB = new MyAsyncTask(ClassA.this); //pass activity-context for dialog
classB.execute();
в onPostExecute
из MyAsynctask
я хочу показать диалог.
protected void onPostExecute(Void result) {
Dialog myCustomDialog = new Dialog(activityContext);
...
myCustomDialog.show();
}
Теперь я следующая проблема:
После, например, я повернуть мое устройство новый объект MyAsynctask
создается и выполняется. Это нормально, и я хочу этого! Но если диалог из предыдущей ссылки MyAsynctask
не закрыт пользователем до тех пор, пока он не повернет устройство, новый диалог будет показан выше старого и, что еще хуже, я пропущу память.
Вопрос:
1) Что такое хороший способ держать правильную ссылку на диалог, так что я могу назвать myCustomDialog.dismiss()
, прежде чем я создать новый экземпляр MyAsynctask
и, следовательно, новый dialog
?
2) Будет ли ссылка myCustomDialog.dismiss()
устранить сильную ссылку, чтобы GC мог выполнять свою работу, и я больше не пропускаю память? Или мне нужно установить сильную ссылку на что-то подобное после отклонения диалога: myCustomDialog = null
?
Я относительно новым для андроид, и я хочу, чтобы узнать хороший образец того, как достигнуть этого сценария :)
Я признателен за любую помощь.
Привет Майк, делает диалог нужно создавать каждый раз, когда это показано? Когда вы получаете поворот, вы, как правило, получаете oncreate/destroy. Так что если на ondestroy вы вызываете dialog.dismiss(). Он должен удалить все старые ссылки –