Android の SharedPreferences が削除されない

Tech
Table of Contents

基本的には、アプリを削除(アンインストール)すると SharedPreferences のデータも一緒に削除されます。

しかし、「削除されたはずなのに、再インストールしたらデータが復活している」というケースがよくあります。これには Android のバックアップ機能などが関係しています。

詳しい挙動と例外について整理しました。


1. 基本的な挙動SharedPreferences は、アプリ固有の「内部ストレージ」領域(サンドボックス)に XML ファイルとして保存されています。

アプリがアンインストールされると、OS はそのアプリに関連するフォルダごとデータを削除するため、端末内からデータは完全に消えます。

2. データが「残っている」ように見える理由(例外)もしアプリを再インストールした際にデータが元通りになっている場合は、以下の機能が働いています。

A. Android 自動バックアップ (Auto Backup)Android 6.0 (API 23) 以降、デフォルトの設定ではアプリのデータ(SharedPreferences を含む)が自動的に Google ドライブ にバックアップされます。

  • ユーザーが同じ Google アカウントを使ってアプリを再インストールすると、システムが自動的にクラウドからデータを復元します。
  • 対策: これを防ぎたい(完全に初期化したい)場合は、AndroidManifest.xml でバックアップを無効にする必要があります。
    <application
        ...
        android:allowBackup="false"
        android:fullBackupContent="false">

B. データを保持するオプション (Android 10以降)Android 10 (API 29) 以降では、マニフェストに android:hasFragileUserData="true" を設定している場合、ユーザーがアプリをアンインストールしようとすると、システムが「アプリデータを保持しますか?」というポップアップを表示することがあります。

  • ここでユーザーが「データを保持する」を選択すると、SharedPreferences などのデータは端末に残ります。

まとめ

ケース SharedPreferences の挙動
通常のアンインストール 削除される
自動バックアップ有効 (デフォルト) 端末からは削除されるが、再インストール時にクラウドから復元される
Android 10+ (データ保持を選択) 端末に残る (開発者が設定した場合のみ)

データを永続化させたい場合もし「アプリを削除してもデータを消したくない」という意図であれば、SharedPreferences は不適切です。以下の方法を検討してください。

  1. 外部サーバー(データベース): アカウントに紐づけてクラウド上に保存する(Firebase など)。
  2. 外部ストレージ(SAF): ユーザーが管理できるフォルダ(ダウンロードフォルダなど)にファイルを書き出す。

コメント