https://developer.android.com/about/versions/oreo/background?hl=ja
[Shakyo]: Pour moi
Afin d'éviter un arrêt inattendu de l'application en raison de la charge du système, etc., l'opération d'exécution de l'application est limitée lorsque l'application n'est pas directement exploitée. Il y a deux façons de le limiter.
--Restriction des services d'arrière-plan lorsque l'application est inactive
Des restrictions sont imposées sur Android 7.0 (API 24) ou version ultérieure, et les restrictions sont renforcées sur Android 8.0 (API 26).
À quelques exceptions près
Remarque: Par défaut, ces restrictions s'appliquent uniquement aux applications qui ciblent Android 8.0 (API 26) ou version ultérieure. Cependant, les utilisateurs peuvent activer la plupart de ces restrictions sur leurs applications sur l'écran Paramètres, même si l'application cible moins que l'API 26. (Contraindre assurera la qualité de l'expérience utilisateur) |
Dans de nombreux cas, l'application peut contourner la limitation avec JobScheduler </ font>.
JobScheduler </ font> vous permet d'agir lorsque votre application est inactive, mais vous pouvez également la planifier pour qu'elle n'affecte pas l'expérience utilisateur.
Android 8.0 ajoute quelques améliorations à JobScheduler </ font> qui facilitent le remplacement des services et des récepteurs de diffusion par des tâches planifiées. Pour plus d'informations, consultez Améliorations de JobScheduler.
JobScheduler: </ strong>
Un service de planification qui gère les tâches afin que divers processus puissent être exécutés efficacement. </ font>
--Il y a une activité visible (peut avoir été mise en pause) --Utiliser le service de premier plan
Dans tout autre état, l'application est considérée comme un traitement en arrière-plan.
Note: Les règles ci-dessus ne s'appliquent pas aux services liés. Si vous avez défini un service lié dans votre application, vous pouvez lier un autre composant à ce service, que votre application soit au premier plan ou non. |
Vous êtes libre de générer et d'exécuter des services de premier plan et d'arrière-plan pendant que votre application s'exécute au premier plan. Lorsque l'application passe en arrière-plan, elle peut se permettre de générer et d'exécuter des services pendant seulement quelques minutes, après quoi le système détermine que l'application est inactive et Service.stopSelf. Arrêtez le service d'arrière-plan de l'application, comme lorsque vous utilisez la méthode () </ font>.
La condition pour que l'application soit ajoutée à la liste blanche est lorsque l'utilisateur effectue le traitement visible suivant.
Dans certaines conditions, les applications d'arrière-plan sont placées sur une liste blanche temporaire, libres de lancer des services pendant quelques minutes et autorisées à s'exécuter.
Lors de la gestion des services d'arrière-plan dans IntentService
Note: Puisque IntentService strong> est un service, il est soumis à de nouvelles restrictions sur les services d'arrière-plan. Par conséquent, les applications qui dépendent d'IntentService ne fonctionneront pas correctement sur Android 8.0 ou version ultérieure. Pour cette raison, Android Support Library 26.0.0 introduit une nouvelle classe JobIntentService. Cette classe fournit les mêmes fonctionnalités que IntentService strong>, mais utilise des tâches strong> au lieu de services strong> lorsqu'elle est exécutée sous Android 8.0 et supérieur. |
JobScheduler Dans de nombreux cas, les applications remplaceront les services d'arrière-plan par des tâches JobScheduler </ font> (comme lors de la migration vers Android 8.0: API 26 ou version ultérieure). Les travaux planifiés sont lancés régulièrement, interrogeant le serveur et se terminant.
Dans Android 8.0 et versions antérieures, la façon de créer un service d'arrière-plan consiste à créer un service d'arrière-plan, puis à promouvoir ce service au premier plan.
À partir d'Android 8.0, le système ne permet plus aux applications d'arrière-plan de créer des services d'arrière-plan. Au lieu de cela, une méthode startForegroundService () </ font> a été introduite, utilisée pour démarrer un nouveau service au premier plan.
Après avoir exécuté startForegroundService () </ font>, startForeground () </ font> </ strong> sera appelé dans les
Découvrez comment appliquer des limites d'arrière-plan pour moins que l'API 26. La définition de limites d'arrière-plan permet de maintenir la qualité de l'expérience utilisateur.
Même si l'API est inférieure à 26, vous pouvez activer les restrictions pour l'application sur l'écran ** [paramètres] **. Nouveau Vous devrez peut-être mettre à jour votre application pour vous conformer aux restrictions.
Si une application est inactive et qu'elle repose sur le traitement des services d'arrière-plan, elle devra remplacer ces services.
**
--Si l'application est en arrière-plan et que vous souhaitez créer un service de premier plan
méthode startForegroundService </ font>, startService () </ font> Utiliser au lieu de pour générer des services de premier plan
--Fonctionnalité de service en double à l'aide de travaux planifiés
En règle générale, utilisez les travaux planifiés comme alternative aux services qui ne s'exécutent pas dans une situation reconnaissable par l'utilisateur.
</ font> Utilisez FCM pour lancer sélectivement des applications lorsque des événements réseau se produisent sans interrogation en arrière-plan
Sondage: interrogez d'autres systèmes à intervalles réguliers </ font>
Maintenez l'opération en arrière-plan jusqu'à ce que l'application devienne naturellement au premier plan
Vérifiez le récepteur de diffusion défini dans le manifeste de l'application. Si le manifeste déclare un récepteur pour les diffusions implicites, vous devez le remplacer. Les solutions possibles sont:
**
--Au lieu de déclarer le récepteur dans le manifeste, appelez Context.registerReceiver () </ font> pour créer le récepteur lors de l'exécution
--Utilisez un travail planifié pour voir les conditions qui ont déclenché une diffusion implicite
Recommended Posts