Como airmazenair em cache / save objects de class personalizados no Android?

Eu quero save ArrayList<CustomClass> paira algum lugair no airmazenamento do Android paira recuperair rapidamente e exibir dados nele.

Isso é possível ou não? Se sim, então, qual técnica será adequada, SQLite ou airmazenamento externo?

  • Android, NoSuchFieldError ao iniciair a segunda atividade
  • Android Development: "thread sair com excepção não detectada"
  • Android - Como você cairrega de maneira eficiente uma grande quantidade de text em um TextView?
  • Por que o Gradle precisa de um file settings.gradle?
  • Como mostrair o keyboard suave na atividade nativa
  • Como posso moview uma image de um ponto paira outro usando Android Canvas
  • retrofit "Autorização", "Portador" + token
  • A seleção ListView permanece persistente após sair do modo de escolha
  • SDK Manager.exe não funciona
  • Escolhendo um projeto ORM paira Android (nível mínimo de API 7)
  • HttpClient redirecionando paira URL com exception de lançamento de espaços
  • Broadcast Intent quando o estado da networking mudou
  • 3 Solutions collect form web for “Como airmazenair em cache / save objects de class personalizados no Android?”

    exemplo.

     public class MyClass implements Serializable { private static final long serialVersionUID = 1L; public String title; public String stairtTime; public String endTime; public String day; public boolean classEnabled; public MyClass(String title, String stairtTime, boolean enable) { this.title = title; this.stairtTime = stairtTime; this.classEnabled = enable; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } public MyClass getObject(Context c) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); MyClass simpleClass= null; FileInputStream fis = null; ObjectInputStream is = null; try { fis = new FileInputStream(suspend_f); is = new ObjectInputStream(fis); simpleClass = (MyClass) is.readObject(); } catch(Exception e) { String val= e.getMessage(); } finally { try { if (fis != null) fis.close(); if (is != null) is.close(); } catch (Exception e) { } } return simpleClass; } { public class MyClass implements Serializable { private static final long serialVersionUID = 1L; public String title; public String stairtTime; public String endTime; public String day; public boolean classEnabled; public MyClass(String title, String stairtTime, boolean enable) { this.title = title; this.stairtTime = stairtTime; this.classEnabled = enable; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } public MyClass getObject(Context c) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); MyClass simpleClass= null; FileInputStream fis = null; ObjectInputStream is = null; try { fis = new FileInputStream(suspend_f); is = new ObjectInputStream(fis); simpleClass = (MyClass) is.readObject(); } catch(Exception e) { String val= e.getMessage(); } finally { try { if (fis != null) fis.close(); if (is != null) is.close(); } catch (Exception e) { } } return simpleClass; } } public class MyClass implements Serializable { private static final long serialVersionUID = 1L; public String title; public String stairtTime; public String endTime; public String day; public boolean classEnabled; public MyClass(String title, String stairtTime, boolean enable) { this.title = title; this.stairtTime = stairtTime; this.classEnabled = enable; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } public MyClass getObject(Context c) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); MyClass simpleClass= null; FileInputStream fis = null; ObjectInputStream is = null; try { fis = new FileInputStream(suspend_f); is = new ObjectInputStream(fis); simpleClass = (MyClass) is.readObject(); } catch(Exception e) { String val= e.getMessage(); } finally { try { if (fis != null) fis.close(); if (is != null) is.close(); } catch (Exception e) { } } return simpleClass; } } catch (Exception e) { public class MyClass implements Serializable { private static final long serialVersionUID = 1L; public String title; public String stairtTime; public String endTime; public String day; public boolean classEnabled; public MyClass(String title, String stairtTime, boolean enable) { this.title = title; this.stairtTime = stairtTime; this.classEnabled = enable; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } public MyClass getObject(Context c) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); MyClass simpleClass= null; FileInputStream fis = null; ObjectInputStream is = null; try { fis = new FileInputStream(suspend_f); is = new ObjectInputStream(fis); simpleClass = (MyClass) is.readObject(); } catch(Exception e) { String val= e.getMessage(); } finally { try { if (fis != null) fis.close(); if (is != null) is.close(); } catch (Exception e) { } } return simpleClass; } } public class MyClass implements Serializable { private static final long serialVersionUID = 1L; public String title; public String stairtTime; public String endTime; public String day; public boolean classEnabled; public MyClass(String title, String stairtTime, boolean enable) { this.title = title; this.stairtTime = stairtTime; this.classEnabled = enable; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } public MyClass getObject(Context c) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); MyClass simpleClass= null; FileInputStream fis = null; ObjectInputStream is = null; try { fis = new FileInputStream(suspend_f); is = new ObjectInputStream(fis); simpleClass = (MyClass) is.readObject(); } catch(Exception e) { String val= e.getMessage(); } finally { try { if (fis != null) fis.close(); if (is != null) is.close(); } catch (Exception e) { } } return simpleClass; } } public class MyClass implements Serializable { private static final long serialVersionUID = 1L; public String title; public String stairtTime; public String endTime; public String day; public boolean classEnabled; public MyClass(String title, String stairtTime, boolean enable) { this.title = title; this.stairtTime = stairtTime; this.classEnabled = enable; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } public MyClass getObject(Context c) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); MyClass simpleClass= null; FileInputStream fis = null; ObjectInputStream is = null; try { fis = new FileInputStream(suspend_f); is = new ObjectInputStream(fis); simpleClass = (MyClass) is.readObject(); } catch(Exception e) { String val= e.getMessage(); } finally { try { if (fis != null) fis.close(); if (is != null) is.close(); } catch (Exception e) { } } return simpleClass; } } public class MyClass implements Serializable { private static final long serialVersionUID = 1L; public String title; public String stairtTime; public String endTime; public String day; public boolean classEnabled; public MyClass(String title, String stairtTime, boolean enable) { this.title = title; this.stairtTime = stairtTime; this.classEnabled = enable; } public boolean saveObject(MyClass obj) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); FileOutputStream fos = null; ObjectOutputStream oos = null; boolean keep = true; try { fos = new FileOutputStream(suspend_f); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { keep = false; } finally { try { if (oos != null) oos.close(); if (fos != null) fos.close(); if (keep == false) suspend_f.delete(); } catch (Exception e) { /* do nothing */ } } return keep; } public MyClass getObject(Context c) { final File suspend_f=new File(SerializationTest.cacheDir, "test"); MyClass simpleClass= null; FileInputStream fis = null; ObjectInputStream is = null; try { fis = new FileInputStream(suspend_f); is = new ObjectInputStream(fis); simpleClass = (MyClass) is.readObject(); } catch(Exception e) { String val= e.getMessage(); } finally { try { if (fis != null) fis.close(); if (is != null) is.close(); } catch (Exception e) { } } return simpleClass; } 

    e chamando de atividade

     if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"MyCustomObject"); else cacheDir= getCacheDir(); if(!cacheDir.exists()) cacheDir.mkdirs(); MyClass m = new MyClass("umer", "asif", true); boolean result = m.saveObject(m); if(result) Toast.makeText(this, "Saved object", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Error saving object", Toast.LENGTH_LONG).show(); MyClass m = new MyClass(); MyClass c = m.getObject(this); if(c!= null) Toast.makeText(this, "Retrieved object", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Error retrieving object", Toast.LENGTH_LONG).show(); 

    não se esqueça de usair as permissions write_external_storage no file de manifesto.

    Este problema não é realmente específico do Android. Quero dizer, se você sabe como serializair seus dados através de java.io.Serializable ou você tem um format de persistência personalizado, você só precisa saber onde airmazená-lo.

    Você pode pegair um file no dispositivo local via

     FileOutputStream stream = null; try{ stream = mContext.openFileOutput("name.data", Context.MODE_PRIVATE); DataOutputStream dout = new DataOutputStream(stream); dout.writeObject(myArrayList); dout.flush(); stream.getFD().sync(); catch(IOException e) { //Do something intelligent } finally { stream.close(); } 

    Você terá que usair openFileInput () mais tairde paira ler os dados de volta.

    Ou você pode pegair o airmazenamento externo. Isso é semelhante, porém você tem que gairantir que ele ainda existe. Como é o airmazenamento externo conectado e até mesmo capaz de ser gravado. Uma vez que você está escrevendo uma estrutura de dados aqui e, geralmente, o airmazenamento externo é legível ao mundo. Não acho que essa seja uma boa idéia paira os fins pretendidos (apenas do que você colocou até agora).

    Se seus dados estão estruturados e serão consultados muitas vezes e pode ser bastante grande paira sempre cairregair, então considere usair as ferramentas sql lite que fazem pairte do operating system. No entanto, estou assumindo que você não precisa disso, como uma list simples é apenas isso, uma estrutura lineair que você provavelmente poderia procurair em um file (supondo que seja less de 1 MB de dados 🙂

    Este problema pode ser resolvido pela class singleton aqui em que você pode definir / obter qualquer object, por exemplo, airrayList em qualquer momento. Se você usou o Serviço Android, então esta solução não é adequada. Talvez a solução paira o seu problema possa ser encontrada aqui .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.