2015-04-24 3 views
0

Dans mon application, je remplace la méthode onLowmemory. Il est appelé à chaque fois. Et mon mobile est bloqué. Comment libérer de la mémoire dans cette méthode.Application Android sur les appels en mémoire faible

J'utilise ci-dessous le code:

@Override 
    public void onLowMemory() { 
     // TODO Auto-generated method stub 
     super.onLowMemory(); 
     System.out.println("*************************************************"); 
     System.out.println("********** on low memory ************************"); 
     System.out.println("*************************************************"); 
     System.gc(); 
    } 

Seulement en utilisant System.gc ... merci.

+0

Vous ne devriez pas utiliser System.gc() ;, trouvez ce que consommez votre mémoire (peut-être de grandes images) –

+0

Avez-vous lu le [Javadoc pour 'onLowMemory()'] (http://developer.android.com/reference /android/app/Application.html#onLowMemory%28%29)? * "Vous devez implémenter cette méthode pour libérer tous les caches ou autres ressources inutiles que vous pouvez conserver.Le système va effectuer une récupération de place pour vous après le retour de cette méthode." * Donc, 1) appelant 'System.gc() 2) vous devez libérer toutes les caches/ressources résidant dans la mémoire dont vous n'avez absolument pas besoin pour que votre application fonctionne (c'est-à-dire qui peut être rechargée à partir du disque/db/réseau, etc.). –

+0

Cette méthode est appelée lorsque le système global est à court de mémoire et les processus en cours d'exécution doivent réduire leur utilisation de la mémoire. Bien que le point exact auquel cela sera appelé n'est pas défini, il se produira généralement lorsque tous les processus d'arrière-plan auront été détruits. C'est-à-dire, avant d'atteindre le point de tuer les processus hébergeant le service et l'interface utilisateur de premier plan que nous aimerions éviter de tuer. lire le document android officiel http://developer.android.com/reference/android/app/Application.html#onLowMemory%28%29 –

Répondre

1

Vous ne devez jamais appeler System.gc() cela crée des problèmes de performances. Vous devez libérer des références à tous les objets lourds que vous tenez - Regardez l'empreinte de votre application. Prenez un tas de tas et voyez-le dans MAT. Regardez quels objets prennent le plus de mémoire et vérifiez si vous pouvez les libérer.