12
votes

Le planificateur d'emploi Android n'est pas persisté sur le redémarrage

J'ai mis en œuvre le planificateur de travail dans mon projet et cela fonctionne bien dans le cas si l'application est en arrière-plan ou si l'application est tuée. Mais cela ne fonctionne pas si l'appareil est redémarré. J'ai inclus xxx pré>

dans mon constructeur et p>

     <service
        android:name="com.xxx.xxxx.service.MyJobService"
        android:permission="android.permission.BIND_JOB_SERVICE" />


0 commentaires

3 Réponses :


9
votes

enregistrer A large code> pour détecter boot_completted code>.

public class StartUpBootReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
        Log.d("startuptest", "StartUpBootReceiver BOOT_COMPLETED");
        ...
    }
  }
}


8 commentaires

Parlez-vous du service normal ou du demandeur de travail?


"CODE> SERVICE Class.Vous devez enregistrer la réception de diffusion pour tout Service classe où vous souhaitez écouter boot_completé .


Alors, quelle est l'utilisation de la mise SETPERSISTABLE ()? développeur.android.com/reference/andrroid / app / job / ...


SETPERSISISTED S'applique uniquement aux applications système, ce qui rend l'application non qualifiée. Si vous travaillez sur une application non système, utilisez des services .


Total Newb Ici, alors pardonnez-moi pour avoir sonnant perdu - ce qui doit-il faire une nouvelle activité?


Pas une activité, c'est un récepteur, voir ma réponse correctement, j'ai ajouté des lignes manifestes sur le dessus avec la balise @kilokahn


J'ai lu que les auditeurs de radiodiffusion ont parfois gagné des performances. Y a-t-il une alternative à cette solution?


Dépend de vos besoins. Où voulez-vous utiliser? Quelles sont les exigences ?



-1
votes

Vous devez appeler la méthode SETPERSISISTED (BOOLEAN ISPERSISTED).

Vous pouvez le trouver dans le doc https://developer.android.com/reference/andrroid/app/job/jobinfo.builder.html#setpersisted (booléen)


1 commentaires

déjà appelé SETPERSISISTED , ne lisez pas la question correctement?



0
votes

Je sais que c'est une vieille question, et vous avez probablement déjà la solution, mais la question était probablement, que le demandice met en cache les Uuids des applications qui ont la permission. Vous devrez réinstaller votre application et ça va aller bien.

Source: https://androïd.googlesource.com/platform/frameworks/base/+/5D34605/services/core/java/com/andrroid/server/job/jobschedulerservice.java


0 commentaires