2015-10-13 20 views
2

假設應用程序檢查,如果一開始是她的第一次運行,用下面的代碼:當應用程序更新時,下一次啓動被視爲第一次運行?

public class MyActivity extends Activity { 

SharedPreferences prefs = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Doing things 

    prefs = getSharedPreferences("com.example.myAppName", MODE_PRIVATE); 
} 

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

    if (prefs.getBoolean("firstrun", true)) { 
     // Do first run stuff here then set 'firstrun' as false 
     // using the following line to edit/commit prefs 
     prefs.edit().putBoolean("firstrun", false).commit(); 
    } 
}} 

假設現在這個應用程序是通過谷歌更新播放,當應用程序再次運行時,該代碼就會認爲這是他的首先開始? Sahred首選項在更新過程中被刪除?

謝謝您的時間,

Flagg。

+0

否。共享首選項將保留。 –

回答

1

我會將您的應用程序的版本存儲在sharedPreferences(而不是布爾值)中。然後比較上次存儲的和當前存儲的。

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
String currentVersion = pInfo.versionName; 
if (prefs.getString("lastVersion", "0").equals(currentVersion)) { 
     // Do first run stuff here then set 'firstrun' as false 
     // using the following line to edit/commit prefs 
     prefs.edit().putString("lastVersion", currentVersion).apply(); 
    } 

see also

+0

謝謝。這是解決問題的好選擇。乾杯。 – flagg327

1

SharedPreferences將通過一個應用程序的更新被保留。因此,您應該能夠使用新版本獲取上次存儲的值。

1

您的問題的答案;是的SharedPreference堅持通過更新。只有在用戶卸載應用程序或刪除應用程序時纔會將其刪除。

相關問題