2017-01-23 18 views
3

私は自分のアプリケーションの起動量を数えるSharedPreferenceを持っています。私は私のアプリをインストールするとき、これは0になると思います。それにもかかわらず、それは14です。私がデータベースで観察したのと同じ変わった動作は、すでに新しくインストールされたものです。再インストール時にSharedPreferencesがリセットされない

Google Cloudなどのアプリデータをリサイクルするつもりはありませんでした。私のデバイスのアカウント設定では、アプリケーションデータの同期がオンになっています。私はそれをオフにして、私は同じ行動を観察再インストールする場合。

誰もがこのような行動を観察していますか?古いデータのリサイクルを防止し、適切なインストールを強制する方法はありますか?

+6

これは、Androidのマシュマロで導入された "自動バックアップ" 機能のだろうか? [https://developer.android.com/guide/topics/data/autobackup.html](https://developer.android.com/guide/topics/data/autobackup.html) – Mauin

+0

それだけです!コードの1行のために引っ張っている多くの髪... – Anthea

+1

@Mauinは答えを得てクレジットを得る – Anthea

答えて

4

は、あなたのtargetSdkVersionが> = 23の場合は、デフォルトでオンになって、「自動バックアップ」機能を導入しました。

これは、データベースとSharedPreferencesをデフォルトでバックアップし、アプリケーションを再インストールするときに復元します。この機能を無効にするには、AndroidManifest.xmlandroid:allowBackup="false"を追加する必要があります。ここ

さらに詳しい情報:Auto Backup for Apps

0

アンドロイド:allowBackup = "false"の場合、タグアプリケーションのAndroidManifestでコードを確認してください。持っていない場合(デフォルトではtrue)、あなたのアプリはアンドロイドバックアップとインフラストラクチャの復元に参加し、あなたの言うこととまったく同じように起こります。

この記事で詳細情報:AndroidのマシュマログーグルでWhat is "android:allowBackup"?

0

これは、共有環境設定に関するアプリ側から処理する必要があります。

共有プリファレンスヘルパークラスが作成され、ヘルパークラスに以下の条件があります。でさらに参照一見のため

private static String SHARED_PREFS_VERSION = "SharedPrefsVersion"; // In this save the version of current shared Prefs. 

void SharedPrefsHelper() { 

    if(BuildConfig.Version > getSharedPrefsVersion()) { 

     SharedPreferences.Editor editor = prefs.edit(); editor.clear(); // Clear all the shared Prefs and update the current version. 

     SetSharedPrefsVersion(BuildConfig.Version); 

    } 
} 

https://stackoverflow.com/a/12381061/7364024

関連する問題