可以通过使用BroadcastReceiver和Service来实现在App关闭时仍然响铃的目的。
public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //启动一个Service来响铃或者振动 context.startService(new Intent(context, AlarmService.class)); } }
public class AlarmService extends Service { @Override public void onCreate() { super.onCreate(); //实现响铃或者振动的逻辑 }
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//响铃或者振动
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
//注册AlarmReceiver IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.xxxx.xxx.ALARM_RECEIVER"); registerReceiver(new AlarmReceiver(), intentFilter);
//注册AlarmService Intent intent = new Intent(this, AlarmService.class); PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0); AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000, pendingIntent); } else { alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000, pendingIntent); }
这样,即使App被关闭了,AlarmService仍然可以被系统拉起来响铃或者振动。