2012-03-14 15 views
7

携帯電話のシャットダウンイベントを傍受することができますか、それとも別のハッキングを使用することはできますか?私は、分析データを収集している非市場アプリケーションの一部である、常に稼働しているサービスを持っています。アナリティクスにセッションとレポートを終了するように指示してから、システムシャットダウンを再開します。Androidでのシャットダウンイベント

サービスのonDestroyまたはonShutdown部分からイベントをトリガーしようとしましたが、報告する時間を与えずに電話機がシャットダウンします。

アクティビティ画面に基づいて多くの短いセッションを作成することでこれを回避することで、私が避けたいと思うような非官能的な分析情報が得られます。

答えて

8

ACTION_SHUTDOWNインテントをキャッチしてブロードキャスト受信機を構築します。

onReceive()メソッドでは、実行しようとしていることを達成できます。

http://developer.android.com/reference/android/content/Intent.html#ACTION_SHUTDOWN

+1

これはアップしており、すべてのテストに合格しています。 –

+1

@TimCapesよろしくお願いします! Androidには非常に多くの意図があります。データ収集を手助けするために、電話がオンになったときにアプリケーションを起動するためのBOOT_COMPLETEアクションをキャッチすることができます; – jjNford

+0

リブート時にサービスを起動するために既にそれを実行していますが、言及してくれてありがとう。 –

3

あなたはRunitme addShutdownHook(Thread hook)メソッドを使用してShutwdownフックを登録してみてください。

Aditionallyメソッド参照状態:

runFinalizersOnExit(ブール値)は、真の引数で呼び出されている場合は、 ガベージコレクションとファイナライズはどちらか、完成しているか、失敗した すべてのフック後に行われます。その後、VMは終了します。

したがって、理論的にはあなたのスレッドが終了するまで、VMは終了しません。

+1

このアイデアをお寄せいただき、ありがとうございます。しかし、VMが実際にシャットダウンしたときや、他のイベントが発生したときには、ドキュメンテーションはかなり疎です。私は不明確な文書を与えられていると思います。私は、ブロードキャストレシーバーのアプローチで問題が発生した場合、これを覚えておきます。 –

+1

@TimCapesあなたが正しいです、この問題については、医者はかなり不明です。 –