インストールされている非システムアプリのリストを取得してユーザーに表示し、これを使用して次のようにします。
private class getApplications extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// perform long running operation operation
for (i = 0; i < list.size(); i++) {
if ((list.get(i).flags & ApplicationInfo.FLAG_SYSTEM) != 1) {
label = (String) pm.getApplicationLabel(list.get(i));
Log.w("Installed Applications", list.get(i).packageName.toString());
}
}
return label;
}
@Override
protected void onPostExecute(String result) {
txtApplications.append(label);
if (i!=list.size()-1) {
txtApplications.append(", ");
}
}
@Override
protected void onPreExecute() {
pm = getPackageManager();
list = pm.getInstalledApplications(PackageManager.GET_META_DATA);
}
};
これはメインUIにある限り正常に機能しますが、読み込み時にアプリが遅れる原因になります。私はこれらの3つの質問を読みました: AsyncTaskとgetInstalledPackages()が失敗し、PackageManager.getInstalledPackages()が空のリストを返し、AndroidでのUIスレッド操作中にProgressDialogを表示します彼らが何を言っているのかは理解できていると思いますが、それを機能させる方法を理解するのに問題があります。遅延はリストリスト=pm.getInstalledApplications(PackageManager.GET_META_DATA);から来ていることを知っています。そして私はgetInstalledApplications(PackageManager.GET_META_DATA);を知っています。メインUIで実行する必要があります。そうしないと、アプリが強制終了します。getInstalledApplications(PackageManager.GET_META_DATA);を維持するにはどうすればよいですか。必要な場所ですが、アプリがフリーズしているように見えないように、バックグラウンドでリストにデータを入力しますか?よろしくお願いします。
Asynctaskを表示するようにコードを更新しました。非同期で実行するコードを取得しましたが、リストではなく、テキストビューに1つの結果しか表示されなくなりました。私はそれを機能させるために私が欠けていることは何か単純なことでなければならないことを知っています。