Как вы можете создать экран загрузки в Android?

#android #android-asynctask #loading #progressdialog

#Android #android-asynctask #Загрузка #progressdialog

Вопрос:

Проблема в том, что я перехожу из другого действия, и когда я пытаюсь перейти к новому действию, оно просто остается на старом, пока не отобразится новое, поэтому я пытаюсь заставить его сразу перейти к новому действию, а затем вызвать экран загрузки, пока он не появится.получает содержимое. (Содержимое поступает либо с веб-сайта, либо из внутренней базы данных).

Я пробовал ProgressDialog с сайта разработки Android, но он ничего не делает, поскольку Activity завершает загрузку, прежде чем что-либо показывать, поэтому к моменту его появления загружать нечего.

Ответ №1:

Сначала запустите новое действие, а затем вызовите файл асинхронной задачи.. это запустит новое действие, когда вы закроете старое. при создании нового действия вызовите класс asyn task, как показано ниже

 public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
            setContentView(your layout here);
            new GetTask(this).execute();

   }
}

class GetTask extends AsyncTask<Object, Void, String> {
    Context context;

    GetTask(Context context, String userid) {
        this.context = context;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        mDialog = new ProgressDialog(mContext);
        mDialog.setMessage("Please wait...");
        mDialog.show();
    }

    @Override
    protected String doInBackground(Object... params) {
        // here you can get the details from db or web and fetch it..
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        mDialog.dismiss();
    }
}
  

Комментарии:

1. Эта асинхронная задача творила чудеса, я просто применил некоторый общий контент к первому элементу списка во время его загрузки, а затем извлек его из фактического сгенерированного содержимого в postExecute

Ответ №2:

В качестве предложения попробуйте сократить код в методе onCreate второго действия. Пусть это будет так же просто, как вызвать super и настроить просмотр содержимого. Это приведет к появлению пользовательского интерфейса, разработанного в формате XML.

Переместите остальной код в свой метод onResume. Следующий шаг, если у вас есть какие-то данные, которые нужно извлечь из базы данных или извне, попробуйте использовать поток (как это сделать и что это такое) или асинхронную задачу.

Комментарии:

1. Ну, я использую несколько startActivityForResults, приведет ли это к перезагрузке при каждом возврате?

2. нет, если вы используете startActivtyForResult , вам нужно реализовать onActivtyResult(..), и контекст возвращается отсюда.. Он не будет перезагружать действие