2016-09-16 2 views
0

Mon application est basée sur InputMethodService, il est une application de clavier personnalisé .. Nous montrons différents onglets, des images, des gifs, des annonces Google, des nouvelles etc de serveur dans cette application dans un service. Mon application consomme beaucoup de RAM. Cette application est un appareil qui ralentit ... Je Clearing déjà chaque liste, arraylist après utilisation .. ..application à base de service à haute consommation RAM sur android

J'ai essayé de mettre mon service dans un autre processus comme celui-ci

<service 
      android:name="services.Myservice" 
      android:description="@string/app_name" 
      android:permission="android.permission.BIND_INPUT_METHOD" 
      android:process=":myprocess"> 

      <intent-filter> 
       <action android:name="android.view.InputMethod" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.view.im" 
       android:resource="@xml/method" /> 
     </service> 

Il aide mais alors je ne pouvais pas obtenir de clique sur les annonces, en cliquant sur les annonces ne faisait rien et il causait également quelques problèmes plus .. comme je ne pouvais pas mettre à jour les thèmes et tous ..

Alors, maintenant Mon application est trop lente dans dactylographiant et il prend la RAM énorme autour de 170-200 MB la plupart du temps. J'ai utilisé google play service pour afficher des annonces et des notifications .. c'est aussi une raison de la consommation élevée de RAM ..

Mais il ya beaucoup d'applications avec toutes ces caractéristiques ... comment gèrent-elles la RAM?

Voici un rapport de MAT:

enter image description here

S'il vous plaît aidez-moi sur ce !! Dans l'attente de suggestions !!

+0

Nous ne pouvons pas donner des détails autres que des directives générales. Lisez ceci, [Enquêter Ram] (https://developer.android.com/studio/profile/investigate-ram.html) –

Répondre

0

Il existe plusieurs façons de réduire la consommation de mémoire.

  1. Utilisez proguard pour masquer le code inutile. Link
  2. Vous pouvez également utiliser un produit de nettoyage des peluches. Cela supprime les ressources inutilisées signalées par la charte Android, y compris les chaînes, les couleurs et les dimensions. Link
  3. Supprime les bibliothèques externes de gradle qui ne sont pas utilisées.
  4. Utilisez les appels de service avec parcimonie. Vous pouvez donner à l'utilisateur la possibilité d'actualiser les données (si possible) chaque fois que de nouvelles données sont nécessaires.
  5. libérerait des ressources XML et Java utilisé quand ils ne sont pas utilisés, ou les libérer simplement quand OnDestroy() est appelée. Link1Link2
  6. Souvenez-vous de fermer le curseur après interrogation de la base. Si vous voulez garder le curseur ouvert à long terme, vous devez l'utiliser avec précaution et le fermer dès que la tâche de la base de données est terminée. N'oubliez pas d'appeler unregisterReceiver() après avoir appelé registerReceiver(). Link
+0

Vous utilisez déjà proguard, les peluches ... –

+0

alors au lieu de courir en permanence le service, demander à l'utilisateur de rafraîchir chaque fois que de nouvelles données sont disponibles. –