【发布时间】:2017-06-03 10:48:22
【问题描述】:
我正在尝试使用 AlarmManager 和 Service 实现报警应用程序
在我的活动中,我声明了以下内容来启动警报服务
Intent intent = new Intent(getApplicationContext(), OnAlarmManager.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+(i * 1000), pendingIntent);
Toast.makeText(getApplicationContext(), "Alarm set in " + i + " seconds", Toast.LENGTH_LONG).show();
我的 OnAlarmManager 代码如下所示
public class OnAlarmManager extends Service{
private static final String TAG = "OnAlarmReceiver";
private NotificationManager nm;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent mainActivityIntent = new Intent(this, MainActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, mainActivityIntent, 0);
//setting up notification
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("New Notification")
.setContentText("This is a successfull app on service")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(pIntent)
.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_LIGHTS;
nm.notify(0, notification);
Toast.makeText(getApplicationContext(), "Alarm has begun", Toast.LENGTH_LONG).show();
Log.i(TAG, "Alarm has begun");
return START_STICKY;
}
}
现在,当我尝试运行它时,即使我在设置警报后关闭应用程序,也会在给定时间在 JellyBean 上运行的设备中触发通知。 但是在 Marshmallow 上运行的设备中,当应用关闭时,服务类永远不会触发
我在这里缺少什么吗?
【问题讨论】:
-
你可能想先检查这个问题stackoverflow.com/questions/34378707/…
-
没有帮助。当应用程序运行或在后台运行时触发通知。但是一旦我将应用程序滑开或关闭它,与之相关的所有内容(接收器,服务)都会被破坏
标签: android android-service android-alarms