1

私のアプリは、3 分ごとにデバイスの位置を検出する位置トラッカーです。緯度と経度を取得し、sqlite db に保存します。インストール後の最初のレコードと、起動後の最初のレコードを見つけるにはどうすればよいですか。例として、record_type 用に db にもう 1 つの列を作成します。そこで、コードのステータスを次のように保存します: installed、onboot、regular。どうすればこれを達成できますか。

4

1 に答える 1

0

インストール後の最初のレコードでは、SharedPreferenceの値を確認してから設定を行うことができます。たとえば、「sp」が SharedPreferences オブジェクトである場合、次のようにします。

boolean firstRecord = sp.getBoolean("firstRecord", true);
sp.edit().putBoolean("firstRecord", false).commit();

次に、このコードを初めて実行するときは sp に "true" が含まれ、残りの時間は false が含まれます (ユーザーがアプリのデータを手動で消去しないと仮定します)。

起動後の最初のレコードでは、 ACTION_BOOT_COMPLETEDイベントを受け取るBroadcastReceiverを使用できます。このようにして、デバイスが再起動されるたびに実行されるコードを指定できます。このイベントを取得すると、次のようにして SharedPreferences を操作することもできます (sp は SharedPreferences オブジェクトです)。

sp.edit().putBoolean("justBooted", true).commit();

あなたがそうするなら:

boolean firstRecordAfterBoot = sp.getBoolean("justBooted", false);
sp.edit().putBoolean("justBooted", false).commit();

起動後にこのコードを実行するのはこれが初めてであることがわかります。

于 2013-05-27T07:22:04.297 に答える