Создание диалога в методе onCreate — Leak

Кажется, я периодически получаю следующую ошибку, когда запускаю свое приложение.

«Активность привела к утечке окна com.android.internal.policy.impl.PhoneWindow$DecorView@40521348, которое изначально было добавлено сюда»

Все, что я делаю, это создаю свой диалог в моем методе onCreate() следующим образом:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

//Create splash-screen object and pass in width and height (width and height are defined and valid, I just removed them from this post to make it more readable)

    splash = new SplashScreen(MainActivity.this, width, height);

//Create dialog that will show splash-screen 
    loading_dialog = new Dialog(MainActivity.this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);

//Set and display splash screen view
    loading_dialog.setContentView(splash);
    loading_dialog.show();
}

Есть идеи, в чем может быть проблема?


person Zippy    schedule 18.06.2013    source источник


Ответы (3)


Вы можете создать диалог в onCreate, но вы не можете его показать, потому что активность еще не видна. Погуглите, где-то был пример, как это сделать правильно...

person Leonidos    schedule 19.06.2013

Я считаю, что вам нужно создать свой диалог, прежде чем показывать его.

вам нужно сделать:

loading_dialog.create().show();

вместо

loading_dialog.show();

Я нашел похожие вопросы, вы можете использовать их

Активность привела к утечке окна com.android.internal.policy. impl.PhoneWindow$DecorView@44f72ff0, который изначально был добавлен здесь

У активности появилось окно с утечкой, которое было изначально добавлено

Активность привела к утечке окна com.android.internal.policy. impl.PhoneWindow$DecorView@46029dd0, который изначально был добавлен здесь

person idan    schedule 18.06.2013
comment
Эй, @idan, спасибо, но это не работает - нет метода create () .... то, что я делаю, работает, ошибка только прерывистая! :-) - person Zippy; 19.06.2013

Вероятно, это потому, что вы не отменяете () свой диалог перед закрытием Activity. Попробуйте сделать cancel() в вашем диалоговом окне в методе onStop(). Это должно помочь. Надеюсь, поможет.

person Pawel Cala    schedule 19.06.2013