我正在努力使一个intentservice像我一样完美地保存在文件中的位置服务。
当文件出现在目录中时,服务会弹出通知。 这在活动中很有效,但在我关闭时却没有。
这是我的代码:
public class NotifyService extends IntentService {
public NotifyService() {
super("NotifyService");
}
@Override
protected void onHandleIntent(Intent intent) {
File alerte = new File(Environment.getExternalStorageDirectory() +
File.separator +"SmartCollecte"+File.separator+ "ALERTE"+File.separator+ "IN"+File.separator+"alerte");
if(alerte.exists()){
createNotification();
}
else{}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public void createNotification() {
Intent intent = new Intent(this, NotificationReceiverActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, 0);
Notification noti = new Notification.Builder(this)
.setContentTitle("nouvelle collecte " + "test@gmail.com")
.setContentText("une nouvelle collecte est disponible").setSmallIcon(R.drawable.notification)
.setContentIntent(pIntent)
.setSmallIcon(R.drawable.notification)
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
noti.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, noti);
}
}
我不能只找到我所缺少的东西...... 谢谢你的帮助
答案 0 :(得分:0)
此解决方案仅适用于preor 26(Android O)SDK:
您必须使用WakefulBroadcastReceiver
启动您的意向服务
使用这种方式,您可以使用alarmmanager管理您的服务,防止被系统杀死(唤醒锁定)并删除Activity
依赖。
此外,我建议使用同样的方法来实现你的想法。
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html