我有一个在启动时执行的异步任务:
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 似乎没问题。所以说这installedApps
就是上面描述的列表。
我想要的是将此列表存储在某处,以便当我需要设备上已安装应用程序的列表时,我可以快速访问它,而无需执行加载已安装应用程序的所有艰苦工作(doInBackground 中的代码需要相当多的执行时间)。我怎样才能做到这一点?
我已经尝试将 gson 序列化与 SharedPreference 结合使用,这由于某种原因引发了错误。我尝试使用一个包含这些条目的 ArrayList 对象创建一个单独的类,static
但这似乎也失败了。如有必要,我可以进行尝试,但如果有人可以为我推荐一种存储 ArrayList 的好方法,以便所有其他活动可以轻松访问它,那将是最有帮助的。