Hvorfor ikke bare gemme det i cache-mappen i din app ved at bruge noget som dette:
String path =Environment.getExternalStorageDirectory() + File.separator + "cache" + File.separator;File dir =new File(path);if (!dir.exists()) { dir.mkdirs( );}sti +="data";Fildata =new File(path);if (!data.createNewFile()) { data.delete(); data.createNewFile();}ObjectOutputStream objectOutputStream =new ObjectOutputStream(new FileOutputStream(data));objectOutputStream.writeObject(actorsList);objectOutputStream.close();
Og derefter kan du læse den når som helst ved at bruge:
List> list =null;Fildata =ny Fil(sti);try { if(data.exists()) { ObjectInputStream objectInputStream =new ObjectInputStream(new FileInputStream(data)); list =(Liste) objectInputStream.readObject(); objectInputStream.close(); }} catch (IOException e) { e.printStackTrace();} catch (ClassNotFoundException e) { e.printStackTrace();}
OPDATERING: Okay, lav en klasse med navnet ObjectToFileUtil, indsæt denne kode i den oprettede klasse
pakke ;import android.os.Environment;import java.io.*;public class ObjectToFileUtil { public static String objectToFile(Object object) throws IOException { String path =Environment.getExternalStorageDirectory() + File .separator + "cache" + File.separator; Fil dir =ny Fil(sti); if (!dir.exists()) { dir.mkdirs(); } sti +="data"; Fildata =ny Fil(sti); if (!data.createNewFile()) { data.delete(); data.createNewFile(); } ObjectOutputStream objectOutputStream =new ObjectOutputStream(ny FileOutputStream(data)); objektOutputStream.writeObject(objekt); objectOutputStream.close(); returvej; } public static Object objectFromFile(String path) kaster IOException, ClassNotFoundException { Object object =null; Fildata =ny Fil(sti); if(data.exists()) { ObjectInputStream objectInputStream =new ObjectInputStream(new FileInputStream(data)); object =objectInputStream.readObject(); objectInputStream.close(); } returner objekt; }}
Skift
privat streng datasti;
og erstat din onPostExecute-metode for JSONAsyncTask-klassen til
beskyttet void onPostExecute(boolsk resultat) { dialog.cancel(); adapter.notifyDataSetChanged(); if(result) { prøv { dataPath =objectToFile(arrayList); } catch (IOException e) { e.printStackTrace(); } } else { Toast.makeText(getApplicationContext(), "Kan ikke hente data fra serveren", Toast.LENGTH_LONG).show(); }}
Nu kan du få adgang til get actorsList fra File når som helst, når du vil, ved at bruge
try { actorsList =(ArrayList)objectFromFile(dataPath);} catch (IOException e) { e.printStackTrace();} catch (ClassNotFoundException e) { e.printStackTrace();}
Hvis du vil gemme filstien efter lukning af programmet, skal du gemme dataPath-strengen (og indlæse ved programstart), for eksempel ved at bruge SharedPreferences.