2011-07-11 8 views
1

私はいくつかの非UIアクションを開始する必要がある場合があります電源がデバイスに接続されてからN秒後です。そのアクションは、UIを介してユーザーが開始することもできます。遅延アクションとBroadcastReceiver

私はACTION_POWER_CONNECTEDをリッスンのAndroidManifest.xmlで定義されているBroadcastReceiverを持っています。

私はonStartCommandに必要な処置を行っています。私の質問は、放送によって行動が引き起こされた場合に、そのサービスを開始する正しい方法は何ですか?

  1. ワンショットタイマタスク:

    は、私は心の中で2つのオプションがあります。しかし、私はそれがドキュメントによると間違っていると思う、私はBroadcastReceiverからの非同期タスクを開始できませんでした。

  2. 再設計サービス:onStartCommand

    • 開始アクション、アクションはユーザー
    • スタートタイマータスクによってトリガされ、タイマーショットでアクションを行うれた場合 - 1とが、サービス内の同じロジック - アクションがブロードキャストによってトリガーされた場合

は、私はそれはコードが少し複雑になります。2.に傾いていますが、それが唯一の正しい方法であると思われます。

-Lev

答えて

1

正しい方法は#2です。これは、すぐにあなたがonReceiveアプリケーションプロセスを終了する可能性があります殺される可能性があります。そしてあなたのTimerTaskはそのような場合には役に立たないでしょう。

代替ソリューションとして、AlarmManagerとそのset機能を使用して保留中のサービスのインテントをスケジュールします。これは、おそらくあなたの場合に最適な解決策です。

+0

ありがとうございます!私はそれを確認します。 – lstipakov

関連する問題