ボタンを含むアクティビティがあります。ボタンを押すと、2 番目のアクティビティが読み込まれます。2 番目のアクティビティには listView とその他の要素があり、ほとんどのデバイスでは読み込みに数秒かかるため、progressDialog を表示して、アクティビティが実際に読み込まれていることをユーザーに知らせたいと考えています。私は次のものを持っています:
編集:
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);
}