ProgressDialog не отображается в UIThread - PullRequest
0 голосов
/ 30 марта 2011

Я создаю карту с помощью Google API API. Поскольку загрузка карты занимает много времени, я пытаюсь добавить уведомление о загрузке, но оно не отображается. Я могу показать progressDialog в обычных темах, хотя. Почему этот диалог не отображается?

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);



        progressDialog = ProgressDialog.show(this, "Please Wait", "Map = loading",false,true);
        //setContentView(R.layout.map);
        runOnUiThread(new Runnable(){
            public void run() {
                try{
                    Log.d("debug", "before setContentView");                        //13:36:25
                    setContentView(R.layout.map);
                    Log.d("debug", "after setContentView");                         //13:36:39

                } catch (Exception e) { }

                progressDialog.dismiss();
            }});

        initMap();     
        initGps();

    }

Ответы [ 2 ]

1 голос
/ 30 марта 2011

Бессмысленно выставлять ProgressDialog для MapActivity, потому что "mapwidget загружается очень долго", потому что у вас нет возможности узнать, когда загрузка MapView завершена, поэтому у вас нет способ узнать, когда закрыть диалог. setContentView() само должно работать довольно быстро; фактическая загрузка фрагментов карты происходит асинхронно.

Обратите внимание, что время, необходимое для отображения MapView, в основном зависит от подключения к Интернету обратно к серверам Google Maps. В большинстве случаев, это не занимает много времени, и, конечно, недостаточно, чтобы получить ProgressDialog.

0 голосов
/ 19 апреля 2011

Использовал это как решение:

http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/

...