मैं एंड्रॉइड के लिए नया हूं। मुझे Intent
और BroadcastReceiver
के बीच का अंतर क्या पता है। मैं BroadcastReceiver
Intent
से अधिक उलझन में हूं।एंड्रॉइड-ब्रॉडकास्ट रिसीवर
कृपया मेरी मदद करें। सरल कोड सहायक होगा।
मैं एंड्रॉइड के लिए नया हूं। मुझे Intent
और BroadcastReceiver
के बीच का अंतर क्या पता है। मैं BroadcastReceiver
Intent
से अधिक उलझन में हूं।एंड्रॉइड-ब्रॉडकास्ट रिसीवर
कृपया मेरी मदद करें। सरल कोड सहायक होगा।
ठीक है, मैं इसे एक उदाहरण के साथ समझाऊंगा।
मान लीजिए कि मैं अपने वेबपृष्ठ से सबवे स्थिति की जांच करने के लिए एक ऐप बनाना चाहता हूं। अगर मेट्रो ठीक काम नहीं कर रहा है तो मैं सिस्टम अधिसूचना भी चाहता हूं।
मैं होगा:
Activity
परिणाम दिखाने के लिए।Service
यह जांचने के लिए कि क्या सबवे काम कर रहा है और अगर यह काम नहीं कर रहा है तो अधिसूचना दिखाएं।Broadcast Receiver
प्रत्येक 15 मिनट में सेवा कॉल करने के लिए Alarm Receiver
कहा जाता है।मैं आपको कुछ कोड दिखाने दें:
/* AlarmReceiver.java */
public class AlarmReceiver extends BroadcastReceiver {
public static final String ACTION_REFRESH_SUBWAY_ALARM =
"com.x.ACTION_REFRESH_SUBWAY_ALARM";
@Override
public void onReceive(Context context, Intent intent) {
Intent startIntent = new Intent(context, StatusService.class);
context.startService(startIntent);
}
}
स्पष्टीकरण: आप देख सकते हैं के रूप में आप एक अलार्म सेट कर सकते हैं। और जब अलार्म प्राप्त होता है तो हम service
शुरू करने के लिए intent
का उपयोग करते हैं। असल में intent
एक संदेश है जिसमें क्रियाएं हो सकती हैं, एक धारावाहिक सामग्री।
public class StatusService extends Service {
@Override
public void onCreate() {
super.onCreate();
mAlarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intentToFire = new Intent(AlarmReceiver.ACTION_REFRESH_ALARM);
mAlarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0);
}
@Override
public void onStart(Intent intent, int arg1) {
super.onStart(intent, arg1);
Log.d(TAG, "SERVICE STARTED");
setAlarm();
Log.d(TAG, "Performing update!");
new SubwayAsyncTask().execute();
stopSelf();
}
private void setAlarm() {
int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
mAlarms.setInexactRepeating(alarmType, SystemClock.elapsedRealtime() + timeToRefresh(),
AlarmManager.INTERVAL_HALF_DAY, mAlarmIntent);
}
}
स्पष्टीकरण:
service
शुरू होता है और:
AsyncTask
जो अद्यतन करने का ख्याल रखता है कॉल एक को अधिसूचित Activity
यह मतलब नहीं है AsyncTask
पेस्ट करने के लिए लेकिन जब यह समाप्त हो गया यह कहता है:
private void sendSubwayUpdates(LinkedList<Subway> subways) {
Intent intent = new Intent(NEW_SUBWAYS_STATUS);
intent.putExtra("subways", subways);
sendBroadcast(intent);
}
यह एक निश्चित NEW_SUBWAYS_STATUS
कार्रवाई के साथ एक नया Intent
, आशय के अंदर डाल सबवे और sendBroadcast
पैदा करता है। अगर कोई उस जानकारी को प्राप्त करने में रूचि रखता है, तो उसे रिसीवर होगा।
मुझे उम्मीद है कि मैंने खुद को स्पष्ट कर दिया है।
पीएस: कुछ दिन पहले किसी ने बहुत ही अच्छे तरीके से प्रसारण और इरादों को समझाया। कोई अपनी बीयर साझा करना चाहता है, इसलिए वह एक कार्यवाही के साथ प्रसारण भेजता है: "FREE_BEER" और अतिरिक्त के साथ: "एक ग्लास बियर"।
क्या आप सुनिश्चित हैं कि हम सबवे अलार्म के साथ इसका परीक्षण कर सकते हैं? – Sayka
एपीआई कहता है:
एक BroadcastReceiver
कोड कि sendBroadcast()
द्वारा भेजे गए उद्देश्यों को प्राप्त होगा के लिए एक आधार वर्ग है।
एक इरादा एक ऑपरेशन का एक सार वर्णन है।
तो, BroadcastReceiver
केवल एक गतिविधि है जो इरादों का जवाब देती है। आप अपने खुद के प्रसारण भेज सकते हैं या यहां तक कि एंड्रॉइड डिवाइस भी इन सिस्टम के व्यापक प्रसारण भेज सकता है जिसमें बैटरी जैसी चीजें कम हैं, या डिवाइस बस बूट हो गया है।
मुझे लगता है कि ब्रॉडकास्ट रिसीवर वास्तव में सेवाओं के हिस्से के रूप में उलझन में आते हैं। हालांकि, मैंने उन्हें सामान्य इंटर-गतिविधि संदेशों के लिए कुछ बार उपयोग किया है, जैसे बैक स्टैक में से किसी एक को भेजना। इसका उपयोग करने के लिए बिल्कुल कोई ज़रूरत नहीं है। "अरे, उपयोगकर्ता परिवर्तन रहा है। इसका जवाब दें!" –
एक ब्रॉडकास्ट रिसीवर एक गतिविधि नहीं है! – Shatazone
** कृपया यह लिंक देखें ** https://stackoverflow.com/questions/15698790/broadcast-receiver-for-checking-internet-connection-in-android-app/44881551#44881551 –