android स्पष्ट हाल के ऐप्स ने ऐप्स मेमोरी को मिटा दिया और मेरे रिसीवर ने काम करना बंद कर दिया




service google-cloud-messaging (3)

ऐसा लगता है कि कुछ उपकरणों में ऐसा होता है (Ex: Xiaomi, Honor devices, Samsung devices with SmartManager फीचर, आदि) जहां एप्लिकेशन को उपयोगकर्ता द्वारा हाल ही में किए गए कार्यों से हटाने पर बल रोक दिया जाता है।

ऐसा इसलिए है क्योंकि उन निर्माताओं ने डिफ़ॉल्ट रूप से टास्क मैनेजर फीचर जोड़ा है जो मेमोरी / बैटरी प्रबंधन के लिए ऐप्स को रोक देता है। लेकिन व्हाट्सएप, फेसबुक जैसे कुछ एप्लिकेशन काम करते हैं। ऐसा इसलिए हो सकता है क्योंकि उन्होंने सबसे प्रसिद्ध अनुप्रयोगों को सफेद कर दिया होगा।

Android डेवलपर दस्तावेज़ीकरण / UX सिफारिशों द्वारा जाना, इस परिदृश्य के लिए एक संभावित समाधान,

केस Xiaomi MIUI आधारित डिवाइस:

अपने ऐप में "AutoStart" अनुमति को सक्षम करने के लिए उपयोगकर्ता से संवाद करने के लिए एक UX बनाएं। मूल रूप से उपयोगकर्ता को "सुरक्षा" ऐप खोलना है -> "अनुमतियाँ" पर क्लिक करें -> "ऑटोस्टार्ट" पर क्लिक करें -> अपने ऐप को देखें और इसे सक्षम करें। मुझे इसका हास्यास्पद और दर्दनाक पता है, लेकिन कोई दूसरा सीधा विकल्प नहीं है।

ऊपर की जाँच के बाद अगर निर्माता Xiaomi है

String manufacturer = "xiaomi";
        if(manufacturer.equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
            //this will open auto start screen where user can enable permission for your app
            Intent intent = new Intent();
            intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
            startActivity(intent);
        }

नोट: यह प्रक्रिया निर्माता के लिए बहुत विशिष्ट के रूप में, ऑनर उपकरणों, सैमसंग उपकरणों के लिए अलग हो सकती है।

अन्य उपकरणों के लिए इसे हल करने के लिए एक सामान्य तरीके के रूप में, onTaskRemoved विधि को ओवरराइड करने के साथ एक चिपचिपा सेवा बनाना है। नीचे दिए गए कोड का उपयोग करें:

public class BackgroundService extends Service {

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return START_STICKY;
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        //create a intent that you want to start again..
        Intent intent = new Intent(getApplicationContext(), BackgroundService.class);
        PendingIntent pendingIntent = PendingIntent.getService(this, 1, intent, PendingIntent.FLAG_ONE_SHOT);
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + 5000, pendingIntent);
        super.onTaskRemoved(rootIntent);
    }
}

यहां 5 सेकंड के बाद सेवा फिर से शुरू होगी। आप इसे किसी भी इरादे से बदल सकते हैं जिसे आप हाल के ऐप्स से साफ़ होने के बाद फिर से शुरू करना चाहते हैं।

https://code.i-harness.com

यदि यह पृष्ठभूमि में है तो MyApp का रिसीवर ठीक काम कर रहा है:

    public class MySmsReceiver extends WakefulBroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("triggered sms");
        if(intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
          Toast.makeText(context, "message Received", Toast.LENGHT_SHORT).show();
    }
}

और रिसीवर के लिए मेरी मैनिफ़ेस्ट फ़ाइल है

        <receiver android:name=".MySmsReceiver">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />

        </intent-filter>
    </receiver>

दस्तावेज़ में कहा गया है कि यदि मैं प्रकट फ़ाइल में एक रिसीवर की घोषणा करता हूं तो उसे हमेशा काम करना चाहिए। लेकिन मेरे मामले में यह नहीं है ...

लेकिन जब भी मैंने अपने हाल के ऐप्स को उन्हें स्वाइप करके साफ़ किया तो बस काम करना बंद कर दिया। और उसके बाद मैं गया था और देखा कि MyApps पूर्वज नीचे की तरह अक्षम किया जा रहा है

और मुझे लगा कि व्हाट्सएप और fb जैसे कुछ ऐप हमेशा मेमोरी में रखे रहते हैं, इस bcoz को स्पष्ट हाल के ऐप्स के स्वाइप करने के बाद भी कार्य प्रबंधक के पास नीचे की तरह फॉलो करने की स्थिति है

तथा

मैं अपने ऐप में यह कैसे कर सकता हूं .. व्हाट्सएप और फेसबुक जैसे अन्य थर्डपार्टी ऐप की तरह व्यवहार करने के लिए मेरे ऐप को क्या बनाया जाएगा ... मैं कैसे अपने ऐप को मेमोरी में बना सकता हूं मैं हमेशा यह पूछ रहा हूं फिर केवल मेरा रिसीवर हमेशा काम करेगा .. अगर मैं गलत हूं तो मुझे ऐसा करने का उपाय दो ...

मैं इसे बहुत खोज रहा हूं और अभी भी मैं इसका समाधान नहीं ढूंढ पा रहा हूं ... क्या मैं गलत पूछ रहा हूं? या वास्तव में ऐसा करने का कोई तरीका है? कृपया किसी ने मेरी मदद की ... यह मुझे एक सप्ताह बना रहा है !!! आशा है कि मैंने अपनी समस्या यहाँ बताई है यदि मैं मुझसे नहीं पूछूँगा तो मैं आपको तत्काल प्रतिक्रिया दूंगा।


कुछ Huawei उपकरणों (और कुछ एलजी और Xiaomi उपकरणों) पर आपको अपने ऐप को उन ऐप्स की सूची में जोड़ना होगा, जिन्हें पृष्ठभूमि में चलाने की अनुमति है। यदि आप नहीं करते हैं, तो एक बार आपका ऐप बंद हो जाता है (हाल की कार्य सूची से स्वाइप करके, या एंड्रॉइड संसाधन कारणों से ऐप को मारकर), यह स्वचालित रूप से पुनरारंभ नहीं होगा।

Huawei उपकरणों पर, सेटिंग को "संरक्षित ऐप्स" कहा जाता है। आप प्रोग्राम को "संरक्षित ऐप्स" की सूची में जोड़ नहीं सकते। आपको अपना एप्लिकेशन इंस्टॉल करने के बाद उपयोगकर्ता को यह बताना होगा कि उसे यह करना है। निर्माता द्वारा प्रसिद्ध ऐप (जैसे व्हाट्सएप, फेसबुक, गूगल मेल) स्वचालित रूप से जोड़े जाते हैं।

यह व्यवहार अलग-अलग उपकरणों पर भिन्न हो सकता है और यह एंड्रॉइड के विभिन्न संस्करणों पर भिन्न हो सकता है और यह भिन्न हो सकता है यदि डिवाइस एक विशिष्ट मोबाइल ऑपरेटर के लिए "ब्रांडेड" हो, क्योंकि मोबाइल ऑपरेटर स्वयं सेटिंग्स के साथ भी छेड़छाड़ कर सकते हैं।

Huawei फोन पर "संरक्षित ऐप्स" सेटिंग देखें , और कुछ और विवरणों के लिए इसे कैसे संभालें

संपादित करें: इसे जोड़ा गया:

इसके अलावा, एंड्रॉइड 4.4 (किटकैट) में एंड्रॉइड ने "स्वाइप से रिसेंट" व्यवहार को तोड़ दिया, ताकि यह उन ऐप के लिए समस्या पैदा करे जो स्वाइप हो गए हैं। स्टिकी सेवाओं को पुनः प्राप्त नहीं किया जाता है और Intent एस प्रसारित नहीं किया जाता है। इससे निपटने के लिए वर्कअराउंड के बारे में यहां कुछ जानकारी है: एंड्रॉइड 4.4 में, हाल के कार्यों में से ऐप को स्वाइप करके स्थायी रूप से अपनी सेवा के साथ एप्लिकेशन को मारता है। कोई विचार क्यों?

इसके अलावा, क्या आपने Google Play स्टोर से अपना ऐप इंस्टॉल किया है? यह संभव है कि प्ले स्टोर बनाम उन ऐप्स के लिए व्यवहार अलग-अलग हो जो उन ऐप्स के लिए इंस्टॉल किए गए हैं जो स्थानीय रूप से इंस्टॉल किए गए हैं (डाउनलोड से या adb या जो भी हो)।


यदि "फोर्स स्टॉप" बटन अक्षम है तो इसका मतलब है कि ओवरव्यू में ऐप को स्वाइप करने से आपका ऐप इस डिवाइस पर बंद हो जाएगा। जब तक उपयोगकर्ता आपके ऐप के साथ फिर से बातचीत नहीं करता तब तक आपको कोई प्रसारण प्राप्त नहीं होगा।







taskmanager