L'application de Android force parfois tue

Je commence l'activité A, puis démarrer l'activité B.
J'appuie sur le bouton d'accueil, puis j'attends longtemps.
Lorsque je reprends l'application, la force est forcée.

02-03 18:42:54.413 828-844/system_process I/ActivityManager: Force stopping ru.tabor.search appid=10089 user=0: from pid 20405 02-03 18:42:54.414 828-844/system_process I/ActivityManager: Killing 30212:ru.tabor.search/u0a89 (adj 7): stop ru.tabor.search 02-03 18:42:54.445 828-5948/system_process I/WindowState: WIN DEATH: Window{18b92c9b u0 ru.tabor.search/ru.tabor.search.modules.authorization.AuthorizationActivity} 02-03 18:42:54.447 828-845/system_process I/WindowState: WIN DEATH: Window{1cd0cfe4 u0 ru.tabor.search/ru.tabor.search.modules.registration.RegistrationActivity} 02-03 18:42:54.519 828-844/system_process I/ActivityManager: Force finishing activity 3 ActivityRecord{25a8977f u0 ru.tabor.search/.modules.authorization.AuthorizationActivity t2593} 02-03 18:42:54.520 828-844/system_process I/ActivityManager: Force finishing activity 3 ActivityRecord{d516838 u0 ru.tabor.search/.modules.registration.RegistrationActivity t2593} 02-03 18:42:54.523 828-20666/system_process W/ActivityManager: Spurious death for ProcessRecord{21ff313b 0:ru.tabor.search/u0a89}, curProc for 30212: null 02-03 18:42:59.890 828-1247/system_process I/ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10100000 cmp=ru.tabor.search/.modules.authorization.AuthorizationActivity} from uid 10089 on display 0 02-03 18:42:59.903 828-1247/system_process V/WindowManager: addAppToken: AppWindowToken{1c4987a0 token=Token{279a08a3 ActivityRecord{9f5afd2 u0 ru.tabor.search/.modules.authorization.AuthorizationActivity t2593}}} to stack=1 task=2593 at 0 02-03 18:42:59.919 828-891/system_process V/WindowManager: Adding window Window{1735e91b u0 Starting ru.tabor.search} at 4 of 8 (after Window{2ab6bf53 u0 com.cleanmaster.mguard/com.keniu.security.main.MainActivity}) 02-03 18:43:19.288 828-1673/system_process I/ActivityManager: Start proc 21366:ru.tabor.search/u0a89 for activity ru.tabor.search/.modules.authorization.AuthorizationActivity 

Comment le réparer?

  • Paramètres Facebook Auderve Network Proguard
  • Comment désactiver les dates passées dans le programmateur de date Android?
  • Android Telegram App -> java.lang.UnsatisfiedLinkError: aucune implémentation n'a été trouvée pour void
  • Autorisation de l'API de Youtube 403 Erreur interdite
  • Eclipse ralentit lors de la création de ressources Android
  • Quelle est exactement l'annotation @hide de Android?
  • 6 Solutions collect form web for “L'application de Android force parfois tue”

    Passez-vous quelque chose comme Intention supplémentaire à l'activité? Sinon, essayez d'enlever le maître propre de votre appareil.

    Est-ce que votre application a échappé? Si le téléphone a peu de mémoire en mémoire, il va tuer l'application Porc de mémoire. S'il existe un processus en cours d'exécution sur cette activité, transférez-le à un service et appelez startForeground () à l'intérieur d'oncreate.

    La récréation d'une activité indique:

    Le système peut également détruire votre activité si elle est actuellement arrêtée et n'a pas été utilisée dans une longue période ou l'activité de premier plan nécessite plus de ressources, de sorte que le système doit désactiver les processus de fond pour récupérer la mémoire.

    Donc, vous ne pouvez pas empêcher le système de tuer votre demande.

    Pour la surmonter, vous devez remplacer la méthode onRestoreInstanceState . Dans ce cas, vous pouvez enregistrer l'état d'activité lorsque le système le tue et le restaurer lorsque vous naviguez dans cette activité.

    Une autre option consiste à mettre en œuvre son propre service Intent .

    Quote from Services Guide de l'API:

    Le système Android forçera à arrêter un service uniquement lorsque la mémoire est faible et doit récupérer les ressources du système pour l'activité qui a la mise au point de l'utilisateur.

    Apparemment, la mémoire Android est limitée, donc Virtual Machine peut supprimer n'importe quel code qui pourrait ne pas être nécessaire.

    Jetez un coup d'oeil sur la méthode du cycle de vie de l'activité , spécialement dans onResume et assurez-vous de bien comprendre cela. Tant de temps que l'application se bloque uniquement pour une utilisation incorrecte, les méthodes du cycle de vie de l'activité.

    Une autre partie importante est la considération de conception pour l'activité, peu importe ce qui s'est passé avec les données de persistance, vous devez afficher son UI avec une valeur par défaut. Donc, l'hypothèse est comme ça, si j'ai des données que je vais afficher si je ne le fais pas, je m'en fous . Votre interface utilisateur ne devrait jamais se bloquer avec ou sans données . Vous pouvez utiliser les ressources , par exemple String.xml , dimens.xml pour stocker une valeur par défaut ou même dans les mises en page.

    Si vous voulez toujours aller avec la classe singleton, ce qui est parfaitement correct, mais assurez-vous que vous vérifiez chaque fois que vous essayez d'accéder à votre singleton.

     if (instance==null) instance=CurrentActivity.getInstance() 

    getInstance() méthode getInstance() non seulement vous renvoie l'instance actuelle, mais elle vous assurera également que

    • Il initialise tous les objets et variables
    • D'autres méthodes singleton comme méthode d'instance

    N'utilisez pas de manière statique les données d'une activité à une autre. Ce n'est pas bon pour Android, spécialement pour le problème de type que vous rencontrez maintenant, et ce n'est pas une très bonne pratique de programmation OOP.

    J'ai recommandé SharedPreference . Trop de moyens pour persévérer des données, si cela correspond à vos exigences.

    Si vous souhaitez transférer des données à partir de composants Android différents comme Activity, Service ou BroadcastReciever, vous pouvez le mettre dans un paquet et envoyer comme intention. Et, comme toujours, ils sont le stockage de données SQLLite, les fichiers IO etc etc.

    J'espère que ceci vous aidera.

    Comme je le sais, vous ne pouvez rien faire à ce sujet! C'est le comportement du système de collecte des ordures Android.

    Comme je me souviens, l'android fait la collecte de déchets par lui-même, si vous n'utilisez pas une activité pendant une longue période de temps en arrière, il sera récupéré par le système pour faire RAM gratuitement pour d'autres applications et processus.

    Si vous avez des informations sur cette activité que vous souhaitez conserver, enregistrez-le ici;

     @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); } 

    Lorsque vous revenez à cette activité,

     @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceState!=null){ // GET #savedInstanceState AND USE THE OBJECT YOU STORED } } 

    C'est tout ce que vous pouvez faire.

    Très probablement, votre application est tuée par le système d'exploitation Android à cause de la surcharge de la mémoire ou il peut y avoir un cas où une sorte de processus s'exécute dans votre thread principal, vous devez le vérifier. Exactez également la fonction OnResume et vérifiez les résultats obtenus.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.