मेरे ऐप में एक विजेट है जो आज की तारीख दिखाता है और मध्यरात्रि में अपडेट होने की आवश्यकता है। विजेटआधी रात को ऐप विजेट कैसे अपडेट करें?
<manifest>
...
<application>
...
<receiver
android:name=".MyWidgetProviderClass"
android:label="MyLabel" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_icon_info" />
</receiver>
</application>
</manifest>
और विजेट जानकारी फ़ाइल के रूप में प्रकट में परिभाषित किया गया है
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/my_layout"
android:minHeight="40dp"
android:minWidth="294dp"
android:updatePeriodMillis="3600000" >
</appwidget-provider>
इस विजेट का कारण बनता है आधी रात और 1 के बीच कभी भी अपडेट होने की है, लेकिन मैं आधी रात के करीब अपडेट होने की करना चाहते हैं तो मैं ऐप का आशय रिसीवर
<receiver
android:name=".MyWidgetUpdaterClass"
android:enabled="true" >
<intent-filter>
<action android:name="MyAction" />
</intent-filter>
</receiver>
और एक स्थिर विधि जोड़ा
public static void setMidngintAlarms(Context context) {
Intent intent = new Intent("MyAction");
PendingIntent pendingIntent =
PendingIntent.getBroadcast(context, 0, intent, 0);
long interval = 24*60*60*1000;
long firstTime = SystemClock.elapsedRealtime() +
millisecondsToNextMidnight();
AlarmManager am = (AlarmManager)context.getSystemService(
Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime, interval, pendingIntent);
}
(चूंकि एक ही इरादे से अलार्म मैनेजर अनुरोध एक-दूसरे को ओवरराइट करने के अनुरोध करते हैं तो सेटमिडिंगिंट अलार्म को कई बार कॉल करने में कोई नुकसान नहीं होता है)।
मैंने कुछ स्थानों से सेट मिडनाइट अलार्म() को ऐप की मुख्य गतिविधि से, ऐपविजेटप्रोवाइडर के ऑनअपडेट() आदि से कॉल करने का प्रयास किया)। सबकुछ अच्छी तरह से काम करता है और अलार्म प्रबंधक इरादे प्राप्त होते हैं और विजेट अपडेट किया जाता है, लेकिन जब तक ऐप चलता है तब तक। अगर मैंने ऐप को मार दिया, तो विगेट्स मध्यरात्रि में अपडेट करना बंद कर देता है।
क्या कोई विचार मध्यरात्रि पर विजेट को अपडेट करने का तरीका बताता है? क्या मुझे सेवा जोड़ने की ज़रूरत है? यदि हां, तो कैसे? कोई उदाहरण?
मैं थोड़ा आश्चर्यचकित हूं कि इस बुनियादी कार्यक्षमता को काम करने के लिए यह कितना छोटा नहीं है।
विजेट अभी भी अपडेट होना चाहिए क्योंकि आप इसके लिए अलार्म सेट कर रहे हैं। तो इससे कोई फर्क नहीं पड़ता कि ऐप चल रहा है या नहीं। यदि डिवाइस पुनरारंभ होता है तो यह माटर करता है और आप शुरुआत से अपना अलार्म पंजीकृत नहीं करते हैं। –
जब एक दोहराने वाला अलार्म सेट होता है और इसे कभी भी रद्द नहीं किया जाता है। एंड्रॉइड सिस्टम किस स्थिति में इसे रद्द करता है, अगर बिल्कुल? मुझे प्रासंगिक जानकारी नहीं मिल सका। उदाहरण के लिए, क्या यह उस गतिविधि या सेवा से जुड़ा हुआ है जिसने इसे भेजा है या यह हमेशा के लिए स्वतंत्र रूप से रहता है? – user1076637