起動時に実行される非同期タスクがあります。
public class BufferApps extends AsyncTask<String, Void, ArrayList<PackageInfo>> {
PackageManager mPackageManager;
Context mContext;
public BufferApps(PackageManager pm, Context context){
super();
this.mPackageManager = pm;
this.mContext = context;
}
protected ArrayList<PackageInfo> doInBackground(String... strings) {
//this code works, not where the problem is
return installedApps;
}
protected void onPostExecute(ArrayList<PackageInfo> installedApps) {
?
Toast.makeText(mContext, "Finished!", Toast.LENGTH_SHORT).show();
}
}
基本的にここで起こっていることは、オブジェクトの ArrayList 、特にユーザーがデバイスにインストールしたすべてのアプリのリストを作成していることです。ここで空白を描いているだけだと思いますが、これをしばらく試してみましたが、installedApps
よくわかりません。 onPostExecute に渡す I は問題ないようです。installedApps
それが上記のリストだとしましょう。
私が望むのは、このリストをどこかに保存して、デバイスにインストールされているアプリのリストが必要なときに、インストールされているアプリをロードするという面倒な作業をすべて行うことなく、すぐにアクセスできるようにすることです (doInBackground のコードにはかなりの時間がかかります)。実行時間)。これどうやってするの?
SharedPreference と組み合わせて gson シリアライゼーションを試みましたが、何らかの理由でエラーが発生しました。これらのエントリを含むArrayList オブジェクトを 1 つだけ使用して別のクラスを作成しようとしましたstatic
が、これも失敗したようです。必要に応じて試してみることもできますが、他のすべてのアクティビティから簡単にアクセスできるように ArrayList を格納するための良い方法を誰かが推奨できる場合は、それが最も役に立ちます。