9

ユーザーがアプリを開いてから5〜10秒以内に、デバイスにインストールされているすべてのアプリのリストを取得する必要があります。

なぜなら、それは約かかります。私のAndroidアプリケーションの一般的なユーザーがデバイスにインストールされているアプリに関する情報を要求するのに5〜10秒かかります。

関連するように、アプリが読み込まれるたびに、インストールされているアプリのリストの新しいコピーを作成する必要があります。

ただし、以下のコードを使用すると、クアッドコアAndroidデバイスで約30秒以上かかります。400個のアプリ(システムとインストール済み-両方が必要)。

'on create'でコードを実行しましたが、アプリを開くのに30秒待つ人は誰もいませんでした。だから私はそれをAsyncTaskに移動しました、それで私のアプリはすぐに開きます。それでも、+30秒かかります。また、リストが読み込まれる前に誰かが特定のアプリを要求した場合、正しい情報を取得できない可能性があります。

なぜこのコードはとても遅いのですか?そして、これをスピードアップするために私は何ができますか?私はそれを10倍速くするか、または私に良いチップを与えることができる人に金で支払います。

final PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    InstalledAppsName.add(packageInfo.loadLabel(pm).toString());
    CountApps=CountApps+1;
}
4

1 に答える 1

2

PackageInfoLoadLabelのパフォーマンスが遅いを参照してください

ラベルの取得には非常に時間がかかります。APKからロードする必要があるためです。その間、パッケージ名を表示して、段階的にラベルに置き換えることができます。

于 2013-06-11T17:00:49.577 に答える