1.定时唤醒
在使用service进行后台长时间工作时,cpu或网络在休眠或深度睡眠的情况下不能正常工作
通过alarm进行定时的开启服务
代码片段
private void startTicker() {
if (mPendingIntent == null) {
mPendingIntent = PendingIntent.getService(this, 0, new Intent(
"com.action.ticker"), 0);
}
if (mAlarmManager == null) {
mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
}
mAlarmManager.cancel(mPendingIntent);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), 2 * 60000, mPendingIntent);
}
private void stopTicker() {
if (mPendingIntent == null) {
mPendingIntent = PendingIntent.getService(this, 0, new Intent(
"com.action.ticker"), 0);
}
if (mAlarmManager == null) {
mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
}
mAlarmManager.cancel(mPendingIntent);
}
在有新消息时,通常会进行系统标题栏的消息通知,在点击通知后进入应用的对应界面
代码片段
private void startTicker() {
if (mPendingIntent == null) {
mPendingIntent = PendingIntent.getService(this, 0, new Intent(
"com.yqfz.bus.ticker"), 0);
}
if (mAlarmManager == null) {
mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
}
mAlarmManager.cancel(mPendingIntent);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis(), 2 * 60000, mPendingIntent);
}
private void stopTicker() {
if (mPendingIntent == null) {
mPendingIntent = PendingIntent.getService(this, 0, new Intent(
"com.yqfz.bus.ticker"), 0);
}
if (mAlarmManager == null) {
mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
}
mAlarmManager.cancel(mPendingIntent);
}