Android Veri Saklama

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Merhabalar şöyle birşeye ihtiyacım var.

    Şimdi elimizde bir Class olsun şu şekilde

    class MyClass{
      public static name;
    }
    

     

    Şu class'ı Ben saklamak istiyorum. Şöyle ki .  Activity onCreate methodunu işlerken bu name kısmını doldurayım.

    onCreate(){
       MyClass.name="deneme";
    }

    onCreate bölümünde bu name değerine denemeyi atadık... Daha sonra uygulamamızı kapattık  (Uygulama ayarlarından Force stop kısmı dışında mesela menü kısına basılı tuttuğunuzda arkada açık uygulamalar var bunları sağa sola çekince kapanıyor ya ondan bahsediyorum.) kapattığı için static değişken 0/null/"" şeklinde artık tipine göre bir değer aldı.

    Bende bunu istemiyorum... Yani bu static değişken uygulama kapansa bile ben bunu kullanmak istiyorum... Tekrar uygulama açıldığında bu class'ı kullanmak istiyorum. Yani şöyle ki. Uygulama kapatıldı ve tekrar acıldı.

    Ben onCreate methoduna 

    onCreate(){
       Log.e(TYPE,MyClass.name);
    }

    yazdığımda bana deneme çıktısını versin istiyorum. Böyle birşey mümkün mü ? Servis ile falan saklayamaz mıyım bunu ??? 
    BroadCastReciever uygulamayı tetikleyen birşey. Buraya static tanımlasam bunu yemez. Çünkü sistem tarafından gelen dürtüye göre o class oluşturuluyor yani tek sefer oluşturulup siliniyor. Sonra tekrar dürtü gelince tekrar oluşuyor vs. Bu yemedi. Servislerin hepsini denedim yemedi..

    Yani ben öyle birşey istiyorum ki. Uygulama kapansa dahi arka planda benim çalışan bir kodum veya static değişkenlerim kalsın bunlar temizlenmesin...

    Bir nebi garbage collector'u yönetmek gibi birşey sanırım bu bu konuda da hiçbir bilgim yok.

    ------------------------------------------------------------

    SharedPreferances , SqLite , Api , Gson  vs gibi şeyler önermeyin bundan bahsetmiyorum burda data saklamaktan bahsetmiyorum. Sadece uygulama kapansa bile benim 1 tane Class'ımın sürekli birşeyleri saklamasını istiyorum o class ölmesin. kalsın yaşasın onun içerisindeki datalar silinmesin... gibi....

     

    Böyle birşey mümkün mü ? Yapabilir miyim ? Mümkünse nasıl yaparım veya ne diye geçiyor bu olay .

     

     

     


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nickalti
    Lightsaber
    Lightsaber's avatar
    Kayıt Tarihi: 29/Ağustos/2012
    Erkek

    Bkz. object serialization ( https://stackoverflow.com/questions/447898/what-is-object-serialization )


    İnsan; insan olsaydı,insan olmazdı..
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Denedim hocam bunu ben yemedi. Şu şekilde yazdım 

    public class Creator implements Serializable{
    
    private static final long serialVersionUID = 475914219638093041L;
        private Long creatorID;
        private String creatorName;
       //......
    
    }

    ama uygulama sonlandırıldığında o class komple çöp. İçi boşalıyor datalar default değerine geçiyor ...

    Hocam bu dediğin olay da zaten datayı saklamak değil mi ? ben Objeyi stackden silinmesini istemiyorum .... Yani Gson dan bir farkı yok bu dediğiniz olayın zaten.

     

    MhmdAlmz tarafından 30/Tem/17 18:28 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Bildiğim kadarıyla bunun bir yolu yok. Çünkü senin yazdığın uygulama tamamen dalvik ya da art sanal makinesinin içinde çalışıyor. Uygulaman sonlandırılınca vm örneği de bellekten kaldırılıyor.

    Çözüm (yine bildiğim kadarıyla) dendiği gibi. Nesneni serileştirip onCreate olayında çözmek. Artık serileştirilmiş veriyi dosya tabanlı, sqliteta vs. nerede saklayacağın sana kalmış.

    Ekleme: Servis de yazsan servisin çökmeyeceği garanti olmadığı için çözüm değil.

    YeniHarman tarafından 30/Tem/17 18:43 tarihinde düzenlenmiştir

    Olaylara karışmayın!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    YeniHarman bunu yazdı

    Bildiğim kadarıyla bunun bir yolu yok. Çünkü senin yazdığın uygulama tamamen dalvik ya da art sanal makinesinin içinde çalışıyor. Uygulaman sonlandırılınca vm örneği de bellekten kaldırılıyor.

    Çözüm (yine bildiğim kadarıyla) dendiği gibi. Nesneni serileştirip onCreate olayında çözmek. Artık serileştirilmiş veriyi dosya tabanlı, sqliteta vs. nerede saklayacağın sana kalmış.

    Ekleme: Servis de yazsan servisin çökmeyeceği garanti olmadığı için çözüm değil.

    Yapı yaşayan birşey olduğu için. Sürekli bir iletişim söz konusu. Systemin içerisinden gelen verilere göre bu class'ı tetikliyorum bende. tıpkı broadcast gibi birşey ama içerisindeki veriler yok olunca sorun büyüyor. class'ın gebermemesi gerekiyor yani...

    Bunun için ART içerisine birşeyler gömmem gerekiyor bu da şuan için mümkün değilmiş. Telefon rootlanınca bi nevi birşeler olabilir ama rootlanırsa telefon bu sefer de müşterinin güveni kaybolur.. Her neyse ben biraz daha araştırayım vardır elbet birşeyler. Olmadı Gson , Serileştirme vs gibi çözümlerle verileri saklayıp bir şekilde classım öldüğü anda tekrar dirilteyim. böyle çözümler bulsam yeterli olacaktır şimdiki hedefim Servisin  veya Uygulamanın Öldüğü anda broadcast ile tekrar classı yapılandırmak gibi şeyler bu çözümleri bulup deneyeyim.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    SORUN ÇÖZÜLDÜ ; 

    Çözümü Çooooookk ama çoooook uzun olduğundan buraya ekleyemeyeceğim.

    kendi siteme ekleyip buradan konuyu güncellerim link veririm 

    Onun dışında böyle birşeye ihtiyacı olup da acil olanlar pm den ulaşsın yardımcı olurum.

    Class haline getirerek Service içerisinde bu işi halledebiliyoruz.. Telefonun bataryası biraz fazla gidiyor bunun çözümü de garbage collector bunu da halledeceğiz elbette :) 

    Şimdilik kalın sağlıcakla.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 1046 Toplam Mesaj: 6
java android