如何获得内联广播接收器的部分唤醒锁定

时间:2013-09-24 06:06:15

标签: java android

我有一个接收器,将来会从一个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);





}

}

请帮忙。

2 个答案:

答案 0 :(得分:0)

BroadcastReceiver应该接收广播,你可以尝试这种方式首先使用一个单独的类来扩展它并使用BroadcastReceiver在reciver标签下的menifest.xml中声明你的BroadcastReceiver,你应该设置intent过滤器以便它只应该监听广播你的意图服务剂量。

将AlarmManager与_WAKEUP样式警报一起使用。这里有一个sample project说明了它的用法(以及您想要的WakefulIntentService,以确保设备在您的网络I / O期间不会重新入睡)。

答案 1 :(得分:0)

尝试这样的事情:

MainActivity:

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

    //Start the Service

    wl.release();