android - how to clear cache chrome




एंड्रॉइड मेरे इरादे अतिरिक्त कैशिंग रखता है, एक लंबित इरादा कैसे घोषित करता है जो ताजा अतिरिक्त रहता है? (2)

कुछ दिन पहले मैं अपने अलार्म के लिए कस्टम इरादों का उपयोग करने के लिए एक रास्ता खोजने के लिए संघर्ष कर रहा था। हालांकि मुझे स्पष्ट जवाब मिला कि मुझे कुछ अद्वितीय आईडी उदाहरणों के आधार पर इरादों को अनुकूलित करना है। setAction() अभी भी कुछ समस्याएं हैं।

मैं इस तरह एक लंबित इंटेंट को परिभाषित करता हूं:

Intent intent = new Intent(this, viewContactQuick.class);
intent.setAction("newmessage"+objContact.getId());//unique per contact
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK ).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP );
intent.putExtra("id", Long.parseLong(objContact.getId()));
intent.putExtra("results", result.toArray());

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);

तो इसका उपयोग अधिसूचना प्रबंधक द्वारा किया जाता है

NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
// first try to clear any active notification with this contact ID
mNotificationManager.cancel(Integer.parseInt(objContact.getId()));

// then raise a new notification for this contact ID
mNotificationManager.notify(Integer.parseInt(objContact.getId()), notification);

यह इस तरह काम करता है:

  • एप्लिकेशन एक संपर्क के लिए एक संदेश बनाता है
  • संपर्क आईडी और संदेश के बारे में विवरण के साथ एक इरादा प्रदान किया जाता है
  • संदेश के साथ अधिसूचना उठाई गई है
  • अधिसूचना पर उपयोगकर्ता कार्रवाई और ऐप इरादे से पारित संदेश प्रदर्शित करता है

समस्या

यह संपर्क के लिए एक से अधिक बार हो सकता है। और जब दूसरा संदेश उत्पन्न होता है, अधिसूचना अच्छी तरह से उठाई जाती है (संदेश ठीक है) लेकिन जब उपयोगकर्ता अधिसूचना को क्रिया करता है तो यह पुराने डेटा का उपयोग करता है, इसलिए पिछला संदेश पारित किया गया है, न कि नया संदेश।

तो किसी भी तरह का इरादा कैशिंग और पिछले अतिरिक्त पुन: उपयोग कर रहा है। मैं इसे प्रति संपर्क और प्रति कार्य अद्वितीय कैसे बना सकता हूं?


मैं आमतौर पर अनन्य अनुरोध कोड निर्दिष्ट करता हूं ताकि मेरे लंबित इंटेंट्स को एक-दूसरे को ओवरराइड करने से रोका जा सके:

PendingIntent pending = PendingIntent.getService(context, unique_id, intent, 0);

और आपके मामले में मैं कॉमन्सवेयर से सहमत हूं कि आपको केवल FLAG_UPDATE_CURRENT ध्वज की आवश्यकता है। नए एक्स्ट्रा पुराने मूल्यों को ओवरराइड करेंगे।


यदि इस संपर्क के लिए आपके PendingIntents से केवल एक समय पर किसी भी समय बकाया होगा, या यदि आप हमेशा अतिरिक्त सेट का उपयोग करना चाहते हैं, तो जब आप PendingIntent बनाते हैं तो PendingIntent

यदि एक से अधिक संपर्क-विशिष्ट PendingIntent एक बार में बकाया होंगे, और उन्हें अलग-अलग अतिरिक्त होने की आवश्यकता है, तो आपको उन्हें अंतर करने के लिए एक गिनती या टाइमस्टैंप या कुछ जोड़ना होगा।

intent.setAction("actionstring" + System.currentTimeMillis());

अद्यतन करें

साथ ही, getActivity() पर getActivity() और किन प्राप्त करने के लिए हल्के ढंग से प्रलेखित दूसरे पैरामीटर का उपयोग उसी अंतर्निहित Intent लिए अलग PendingIntent ऑब्जेक्ट्स बनाने के लिए किया जा सकता है, हालांकि मैंने कभी यह कोशिश नहीं की है।





extras