2010-08-02 14 views
14

मेरे पास एक ऐसी सेवा है जो अधिसूचना तैयार करती है और फिर समय-समय पर कुछ जानकारी के साथ अद्यतन करती है। लगभग 12 मिनट या तो फोन दुर्घटनाग्रस्त हो जाता है और रीबूट हो जाता है, मेरा मानना ​​है कि यह अधिसूचना अपडेट करने के तरीके के साथ निम्नलिखित कोड में मेमोरी रिसाव के कारण होता है, अगर कोई ऐसा मामला है और मुझे सलाह दे तो कृपया मुझे सलाह दें गलत कर रहा हूँअधिसूचना सेवा में एंड्रॉइड मेमोरी लीक

onCreate:

mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

createNotification:

private void createNotification() { 
    Intent contentIntent = new Intent(this,MainScreen.class); 
    contentIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent appIntent =PendingIntent.getActivity(this,0, contentIntent, 0); 

    contentView = new RemoteViews(getPackageName(), R.layout.notification); 
    contentView.setImageViewResource(R.id.image, R.drawable.icon); 
    contentView.setTextViewText(R.id.text, ""); 

    notification = new Notification(); 
    notification.when=System.currentTimeMillis(); 
    notification.contentView = contentView; 
    notification.contentIntent = appIntent; 
} 

updateNotification:

private void updateNotification(String text){ 
    contentView.setTextViewText(R.id.text, text); 
    mNotificationManager.notify(0, notification); 
} 

अग्रिम धन्यवाद।

+0

सही रिबूट – smith324

+0

यह सिर्फ जीसी बड़ा और बड़ा हो रही है जब तक यह समस्याओं का कारण बनता है और मारे गए सामान शुरू होता है और रिबूट – stealthcopter

+0

यकीन है कि यह सुनिश्चित करें कि आपके आवेदन के लिए है से पहले Logcat के कुछ पोस्ट करें। इसे पूरी तरह से अनइंस्टॉल करने का प्रयास करें और देखें कि यह अभी भी होता है या नहीं। हाल ही में स्थापित कुछ अन्य ऐप हो सकता है। – Moncader

उत्तर

9

मैं एक ही समस्या पर ठोकर खाई। ऐसा लगता है कि यदि आप सेवा में रिमोट व्यू और अधिसूचना "कैश" नहीं करते हैं, लेकिन "अद्यतन" दिनचर्या में उन्हें स्क्रैच से फिर से बनाएं, यह समस्या गायब हो जाती है। हां, मुझे पता है कि यह कुशल नहीं है, लेकिन कम से कम फोन मेमोरी त्रुटियों से बाहर नहीं निकलता है।

+0

हमम अजीब, छुट्टियों की पुष्टि करने के बाद मैं इसे आजमाउंगा। – stealthcopter

+0

यह काम करने लगता है, जहां तक ​​मैं कह सकता हूं। – Timmmm

+0

हाय, मैं एक सेवा का उपयोग कर एक अधिसूचना रिमोट व्यू (इसके अंदर 3 टेक्स्टव्यू) लगातार (प्रत्येक सेकेंड के बाद) अपडेट कर रहा हूं। कुछ समय बाद फोन बहुत धीमा हो जाता है और फ्रीज हो जाता है। क्या मुझे इस समस्या के लिए भी अधिसूचना दोबारा बनाना चाहिए? – berserk

2

मुझे एक ही समस्या थी। मेरा समाधान उस व्यक्ति के करीब है जिसे @ हिम ने कहा था, लेकिन मैं अधिसूचना को कैश करता हूं (केवल रिमोट व्यू को पुनर्निर्मित किया जाता है)। ऐसा करके, यदि आप इसे देख रहे हैं तो अधिसूचना फिर से फ्लैश नहीं होगी।

उदाहरण:

public void createNotification(Context context){ 
    Notification.Builder builder = new Notification.Builder(context); 

    // Set notification stuff... 

    // Build the notification 
    notification = builder.build(); 
} 

public void updateNotification(){ 
    notification.bigContentView = getBigContentView(); 
    notification.contentView = getCompactContentView(); 

    mNM.notify(NOTIFICATION_ID, notification); 
} 

और तरीकों getBigContentView और getCompactContentView में मैं अपडेट किया गया लेआउट के साथ एक नया RemoteViews लौट आते हैं।

संबंधित मुद्दे