2016-03-30 24 views
0

üzerinde kayboluyor Temel olarak, Android uygulamam ile veri kaydetmeye ve yüklemeye çalışıyorum. Ev düğmesine basıldığında ve uygulamaya yeniden girerken amaçlandığı şekilde çalışır. Uygulamayı uygulama yöneticisi aracılığıyla ilk kez bile kapatarak, doğru verilerle (test amacıyla şu anda sadece bir tam sayı) ince yükler. Uygulamanın uygulama yöneticisi aracılığıyla kapatıldığı ikinci kez, ilk kez aynı yöntemi kullanarak öldürülse de veriler kaybolur. Tasarruf, yükleme ve ilgili yöntemler ile ilgili herhangi bir şeyi ele alan kodun altında bulun.Android: verileri kaydetmeye çalışıyor ancak ikinci onDestroy()

Android yaşam döngüsü yöntemleri:

public int setting1 = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_layout); 

    loadData(); 

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

    AdView mAdView = (AdView) findViewById(R.id.adView); 
    AdRequest adRequest = new AdRequest.Builder().build(); 
    mAdView.loadAd(adRequest); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    saveData(); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    saveData(); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    saveData(); 
} 

@Override 
public void onResume() { 
    super.onResume(); 

    loadData(); 

    updateUnlockables(setting1); 
} 

Kaydet ve Yük Yöntem:

public void saveData(){ 
    String filename = "icesSave.asv"; 
    FileOutputStream fos; 

    try { 
     fos = openFileOutput(filename, Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeInt(setting1); 
     oos.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public void loadData(){ 
    String filename = "icesSave.asv"; 
    FileInputStream fis; 

    try{ 
     fis = openFileInput(filename); 

    } catch (FileNotFoundException ex){ 
     return; 
    } 
    try { 

     ObjectInputStream ois = new ObjectInputStream(fis); 
     setting1 = ois.readInt(); 
     ois.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

saveData(); süper hattan önce. onPause, onDestroy ve onStop. –

cevap

1

saveData() 3 yöntemle çünkü super

Dont Kullanımı saveData() üzerinde üzerinde olmalıdır aynı prosedür ss

 @Override 
     public void onPause() { 
    saveData(); 
      super.onPause(); 

     } 

     @Override 
     public void onStop() { 
saveData(); 
      super.onStop(); 

     } 

     @Override 
     public void onDestroy() { 
    saveData(); 
      super.onDestroy(); 

     } 
+0

Evet, bu kesinlikle sorunumu çözdü çok teşekkür ederim. En kısa zamanda en kısa sürede güncellenir. –

+0

AYRICA LÜTFEN DİKKAT: Yukarıda gösterildiği gibi sadece onPause() üzerine verileri kaydetmelisiniz. Tüm 3 "kill" yöntemlerinde veri kaydetme, kaydetme yöntemini kırıyor gibi görünüyordu (veya kaydederken yanlış verileri yazıyor gibi görünüyordu). Bunun neden olduğundan emin değilsiniz, ancak sadece bir kez kaydetmeniz gerektiğini unutmayın, onPause(). –

İlgili konular