3

私のアプリは現在クラッシュしていませんが、非常に堅牢にしようとしています.1つのことは、ユーザーが手動で停止するまで「何らかのイベント」の時間を追跡することです.

私の意図した実装

これが私がこれを実装することを計画していた方法です。彼らが最初の「イベント」を送信すると、タイミングが開始され、SQLite データベースで最初の時間と残りのイベントが開始されるようにするつもりでした。次に、イベントのタイミングを停止するためのボタンが同じ送信画面に表示されます。イベントの正確な時間を追跡したいと考えています。進行中のイベントと、その一意の ID を持つ別の設定があることを示すために、設定にフラグを設定します。

懸念

だから私の懸念は次のとおりです。アプリがクラッシュしたり、何か悪いことが起こったりした場合、イベントの終了時間を変更するオプションをユーザーに提供したいと考えています。私はこれを2つの方法のいずれかで行うつもりでした. 次に、編集するためのこのオプションを彼らに与えます。2. 存在する場合は、onTerminate メソッドまたはAndroid がクラッシュした場合に EVEN を閉じるときに使用するものを呼び出します。繰り返しますが、これが存在するかどうかはわかりません。

助言がありますか?

4

1 に答える 1

1

ブロードキャストの状態で sendStickyBroadcast(Intent) を発行します。いつでも、スティッキー ブロードキャストのヌル レシーバを登録すると、最後の既知のブロードキャスト状態が得られます。下がっても構わない。そのため、起動時にブロードキャストが1つある場合があります。

もちろん、アプリが再び起動すると、ON_BOOT_COMPLETED インテント ブロードキャストが行われます。これを聞きたいと思うでしょう。

また、Android がクラッシュ時に特定のメソッドを呼び出すことを期待しないでください。

一般的な原則は次のとおりです。保存する必要がある重要なもの (状態を含む) がある場合は、すぐに stickyBroadcast を発行するか、SharedPreference として保存します。特定のコールバックやクラッシュ イベントの処理を待たないでください。状態情報をすぐに保存して ON_BOOT_COMPLETE を処理したり、SharedPreferences で最初の起動値かどうかを確認したりするだけで対応できないものはありません。これは実際にはチェックサムと同じです。イベントの開始は、メッセージの始まりです。メッセージの終わりも必要です。またはイベントイベントの終了。表示されない場合は、成功していません。最後の状態を頻繁に発行し、それに応じて回復するだけです。

于 2012-08-17T23:03:27.820 に答える