我有一个接收器,将来会从一个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);
}
}
请帮忙。
答案 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();