0

私は、受信機を持っています。これは、今後、インテントサービスからブロードキャストを受信します。activity 内でレシーバーを初期化しました。

IntentService が完了するまでに時間がかかる場合があり、結果をブロードキャストするまでに携帯電話デバイスがスリープ状態になり、ブロードキャストが受信されません。

携帯電話がスリープ状態であっても、IntentService は最後まで実行され、ブロードキャスト レシーバのみが何も受信しないことを確認しました。

どうにかしてどこかで部分的なウェイクロックを取得する必要があることを知っています:(。私はこれについて暗闇の中にいます。

これは私の単純な活動であり、関連する部分のみが含まれています。

public class NewsActivity extends Activity implements OnDownloadComplete{

...
..
..



 private BroadcastReceiver receiver = new BroadcastReceiver() {


     @Override
        public void onReceive(Context context, Intent intent) {
          ..
          System.out.println("Called"); // Not printed on logcat if the cell is sleeping


        }
      };
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_news);


    ..
    ..

    ..

    /*LAUNCHING SERVICE*/
    Intent intent = new Intent(context, NewsSyncTask.class);
    intent.putExtra( NewsSyncTask.NOTIFICATION, Footer.this.receiverNotificationClass);
    context.startService(intent);





}

}

助けてください 。

4

2 に答える 2

0

このようなことを試してください:

主な活動:

PowerManager pm = (PowerManager) this
            .getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(
            PowerManager.PARTIAL_WAKE_LOCK, "");
    wl.acquire();

    //Start the Service

    wl.release();
于 2013-09-24T06:41:17.533 に答える
0

BroadcastReceiverはブロードキャストを受信する必要があります。この方法で最初に別のクラスを作成し、BroadcastReceiverで拡張して、reciverタグの下のmenifest.xmlでBroadcastReceiverを宣言します。インテントフィルターを設定して、意図するブロードキャストのみをリッスンする必要がありますサービス用量。

_WAKEUP スタイルのアラームで AlarmManager を使用します。これは、その使用法を示すサンプル プロジェクトです (必要な WakefulIntentService と共に、ネットワーク I/O 中にデバイスがスリープ状態に戻らないようにするため)。

于 2013-09-24T06:34:45.533 に答える