2013-05-26 5 views
3

У меня есть два вида деятельности Activity1 и Activity2. При нажатии на кнопку я переключаюсь с Activity1 на Activity2. Но Activity2 занимает много времени для загрузки из-за медленной скорости интернета. Пустой экран отображается до загрузки операции.Как показать индикатор выполнения при переключении между действиями

Вместо черного экрана я хочу показать индикатор выполнения и когда Activity2 готов, затем закройте индикатор выполнения, чтобы пользователь не расстроился.

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

Спасибо заранее!

+0

разместить свой код ... –

+0

я бы уделять гораздо больше фиксируя активность 2. Используйте TraceView и аналогичные методы, чтобы определить, что является причиной его так долго. – CommonsWare

+0

@CommonsWare, Activity2 загружает карту google. Карта требует времени для загрузки. Итак, я хочу показать индикатор выполнения до полной загрузки карты! Это моя идея. Но не знаю, как его реализовать! – Mahe

ответ

0

Начните свой Activity2 с экрана загрузки (неопределенный прогресс или круг в порядке) или даже лучше: данные в кеше и поместите ваши тяжелые вещи в поток. В конце потока удалите панель выполнения и покажите свои данные.

С этой идеей в виду, деятельности2 начнет очень быстро, и вы можете отобразить wathever вы хотите во время загрузки данных

Тема будет избежать попадания черный экран.

public class Activity2 extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     new Thread(new Runnable() { 
      public void run(){ 
       //All your heavy stuff here!!! 
      } 
     }).start(); 
    } 
} 

Примечание: Вы можете предпочесть AsyncTask, вы можете увидеть здесь большой comparaison между различно, как добиться того, что вы хотите:

http://techtej.blogspot.be/2011/03/android-thread-constructspart-4.html

+0

Идея хорошая! Не могли бы вы поделиться любыми ссылками относительно этого! Благодаря!! – Mahe

+0

Добавлен код. –

0

ASyncTask является то, что вы ищете. Это не должно быть сложно реализовать.

1

вы можете использовать AsyncTask в onCreate деятельности 2. в onPreExecute показать progressdialog. В onDoinBackground выполните загрузку. когда сделано в onPostExecute, скройте progressdialog и покажите контент в пользовательском интерфейсе.

В примере кода

private class YourTask extends AsyncTask<Void, Void, ContentType> { 
    protected void onPreExecute() { 
     //show progressdialog here 
    } 

     protected ContentType doInBackground() { 
      // download content 
      return content; 
     } 


     protected void onPostExecute(ContentType content) { 
      // hide progress dialog 
       // show the content 
     } 
    } 
+1

вы можете указать импорт, который будет использоваться для ContentType ..? –

+0

Что такое ContentType? –

Смежные вопросы