У меня есть действие, которое содержит кнопку, когда вы нажимаете кнопку, она загружает второе действие. Второе действие имеет listView и множество других вещей, и на большинстве устройств требуется несколько секунд для загрузки, поэтому я хочу отобразить progressDialog, чтобы пользователь знал, что активность фактически загружается. У меня есть следующие:Загрузка активности перед запуском
EDIT:
public void rewardFirstNext(View view){
AsyncTask<Void, Void, Void> progress = new AsyncTask<Void, Void, Void>() {
private ProgressDialog progressDialog;
protected void onPreExecute(){
progressDialog = new ProgressDialog(getApplicationContext());
progressDialog.setTitle("Loading Installed Applications");
progressDialog.setMessage("Please wait.");
progressDialog.setCancelable(false);
progressDialog.setIndeterminate(true);
progressDialog.show();
}
protected Void doInBackground(Void... voids) {
PackageManager mPackageManager = getPackageManager();
List<Applications> packageInfoListApps = new ArrayList<Applications>();
List<PackageInfo> packageInfoList = mPackageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
List<PackageInfo> installedApps = new ArrayList<PackageInfo>();
for (PackageInfo apps : packageInfoList) {
if (!isSystemPackage(apps)) {
installedApps.add(apps);
}
}
Collections.sort(installedApps, new Comparator<PackageInfo>() {
public int compare(PackageInfo o1, PackageInfo o2) {
return o1.applicationInfo.loadLabel(getPackageManager()).toString().compareToIgnoreCase(o2.applicationInfo.loadLabel(getPackageManager()).toString());
}
});
for (PackageInfo apps : installedApps) {
packageInfoListApps.add(new Applications(apps, false, false));
}
//what else happens here?
return null;
}
protected void onPostExecute(Void result){
progressDialog.dismiss();
}
};
progress.execute((Void[]) null);
}
Проблема в том, что вы делаете, не дает вам хотеть, чтобы вы этого хотели. то есть. он не загружает содержимое в список. все, что вы делаете, - это запуск активности из фонового потока и ничего более. Вам нужно опубликовать то, что вы загружаете в список, и как вы это делаете. – tyczj
Возможно, я ошибаюсь, так как я не делал Android некоторое время, но когда вы запускаете активность в doInBackground(), будет onPostExecute() запускать только после того, как вы закончите новую деятельность? (DoInBackground будет продолжаться до завершения новой активности) –
@StuWhyte все это неправильно, он не должен использовать асинтез для запуска активности. но нет, он не будет запущен, потому что вызывающая активность будет уничтожена, тогда он начнет новую активность. – tyczj