#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(..), и контекст возвращается отсюда.. Он не будет перезагружать действие