我正在编写一个应用程序,除其他外,将通过通知人员通知每天通勤,如果他们通常采取的公共交通工具有某种延迟。
我考虑使用AlarmManager实现此功能,但我发现太多问题与选择了多少公共交通以及用户决定接收通知的日期有关。
所以我提出了另一种解决方案:将用户首选项保存到文件中,然后启动后台服务,每5分钟检查一次该文件,如果条件得到遵守,则显示通知:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
while(true){
try{
if (fileCheck()){
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.avanti).setContentTitle(getString(R.string.app_name)).setSound(alarmSound);
mBuilder.setContentText("Test");
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());
Thread.sleep(300000)
}
} catch (Exception ignored){}
}
}
它有效,但我有疑问:这是否会导致性能或电池耗尽问题?或者它是否安全,因为它大部分时间都在睡觉?