ユーザーがアプリを開いてから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;
}