У меня есть задача асинхронной, которая выполняется при запуске:Передача результата AsyncTask дальше?
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, чтобы он мог легко получить доступ ко всем другим действиям, это было бы наиболее полезно.
Вы должны взглянуть на различные варианты Android обеспечивает: http://developer.android.com/guide/topics/data/data-storage.html –
Вы можете быть в состоянии использовать. get() из класса, который вызывает ваш AsyncTask. Такие, как ... BufferApps.execute(); arrayList = BufferApps.get(); –