0

我有一个接收器,它将在未来接收来自 intentservice 的广播。我已经在我的活动中初始化了接收器。

有时 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

BroadcastReceiver 应该接收广播,您可以尝试以这种方式首先编写一个单独的类并使用 BroadcastReceiver 对其进行扩展服务剂量。

将 AlarmManager 与 _WAKEUP 样式的警报一起使用。这是一个示例项目,说明了它的使用(以及您需要的 WakefulIntentService,以确保设备在网络 I/O 期间不会重新进入睡眠状态)。

于 2013-09-24T06:34:45.533 回答
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 回答