2011-02-05 30 views
7

sử dụng onSaveInstanceState(Bundle ..) and onRestoreInstanceState(Bundle ..)
thực sự tốt và hoạt động, nhưng nó hoạt động khi nhấp vào nút Tắt trên Trình giả lập.
Bây giờ, tôi muốn để tiết kiệm nước và khôi phục dữ liệu lưu khi nút dưới đây được sử dụng:
EmulatorLàm thế nào để sử dụng onPause với Android?

tôi nghĩ rằng nó có thể sử dụng OnPause() HOẶC oOnStop(), nếu tôi đúng, Làm thế nào để sử dụng nó ,
sẽ đủ để hiển thị cho tôi nguồn Java của một biến boolean và khôi phục nó,
Cảm ơn.

Trả lời

13

Tôi sẽ sử dụng onPause(), vì onStop() không được đảm bảo để được gọi. Xem application fundamentals để biết chi tiết về vòng đời.

Để lưu và khôi phục boolean, tôi sẽ sử dụng SharedPreferences. Có một ví dụ mã trên data storage page cho thấy cách lưu và khôi phục boolean. Họ sử dụng onCreate()onStop(), nhưng tôi sẽ sử dụng onResume()onPause(), vì những lý do tôi đã đề cập.

0

bạn chỉ có thể ghi đè onPause() trong hoạt động của bạn nói activtyA khi bạn đang điều hướng đến một hoạt động khác nói activityB và ghi đè lênResume() khi u trở lại activityA.

5

ví dụ:

public class Calc extends Activity { 
public static final String PREFS_NAME = "MyPrefsFile"; 

@Override 
protected void onCreate(Bundle state){ 
    super.onCreate(state); 
    . . . 

    // Restore preferences 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    boolean silent = settings.getBoolean("silentMode", false); 
    setSilent(silent); 
} 

@Override 
protected void onStop(){ 
    super.onStop(); 

    // We need an Editor object to make preference changes. 
    // All objects are from android.context.Context 
    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putBoolean("silentMode", mSilentMode); 

    // Commit the edits! 
    editor.commit(); 
} 

}

12

Tôi đã có vấn đề đọc sharedPreferences sau PowerOff khi họ đã được lưu trữ sử dụng . Cách giải quyết trước tiên là gọi số clear().

public static final String PREFS_NAME = "MyPrefsFile"; 

    protected void onPause(){ 
     super.onPause(); 

     SharedPreferences settings = getSharedPreferences(PREFS_NAME,0); 
     SharedPreferences.Editor editor = settings.edit(); 
     // Necessary to clear first if we save preferences onPause. 
     editor.clear(); 
     editor.putInt("Metric", mMetric); 
     editor.commit(); 
    } 
Các vấn đề liên quan