android studio intentservice没有在应用程序之外运行

时间:2017-08-30 14:47:41

标签: java android intentservice

我正在努力使一个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);

}

}

我不能只找到我所缺少的东西...... 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

此解决方案仅适用于preor 26(Android O)SDK:

您必须使用WakefulBroadcastReceiver启动您的意向服务 使用这种方式,您可以使用alarmmanager管理您的服务,防止被系统杀死(唤醒锁定)并删除Activity依赖。

此外,我建议使用同样的方法来实现你的想法。

https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html