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