मैं एक आवेदन है कि एक प्रसारण प्राप्त करता है विकसित किया है और उसके बाद एक Activity
, जहां कि Activity
प्रश्नों एक ContentProvider
जो वास्तविक समय में डीएनएस से जानकारी खींचती की शुरूआत।एंड्रॉइड ब्रॉडकास्ट रिसीवर, कंटेंटप्रोवाइडर और गतिविधि के बीच डेटाफ्लो?
मैं यह इतना जाने की कि बजाय शफ़ल करने में सक्षम होना चाहते हैं:
BroadcastReceiver.onReceive() {
Intent intent = new Intent(...);
intent.setData(...); // set a single String data
context.startActivity(intent);
}
Activity.onCreate() {
String value = intent.getData(); // get the String data
Cursor = ContentProvider.query(search);
...
setContentView(...);
}
यह जाता है:
BroadcastReceiver.onReceive() {
Cursor = ContentProvider.query(...);
if (cursor != null) {
Intent intent = new Intent(...);
// how do I pass the cursor?
getContext().startActivity(intent);
}
}
Activity.onCreate() {
// how do I retrieve the cursor?
setContentView(...);
}
यानी अगर query()
रिटर्न कोई डेटा मैं शुरू से वंचित करना चाहते हैं Activity
, और ब्रॉडकास्ट संदेश सामान्य के रूप में गिरने की अनुमति देता है।
query()
डेटा वापस करता है, मुझे लगता है कि Cursor
, Activity
को आपूर्ति किए जाने वाले ताकि मैं फिर से डेटा के लिए जाने के लिए और क्वेरी करने के लिए है नहीं करना चाहती।
बदले में, Activity
का अपना यूआई है जिसे उपयोगकर्ता को जवाब देने की आवश्यकता है।
क्या यह संभव है?
ठीक है, अच्छा लगता है - लेकिन - संदर्भ के लिए कॉल कब होता है .startActivity() वापस आती है? – Alnitak
और ब्रॉडकास्ट रिसीवर को यह कैसे पता चलेगा कि गतिविधि ने कुछ भी उपयोगी किया है या नहीं? AFAIK मैं ब्रॉडकास्ट रिसीवर में startActivityForResult() का उपयोग नहीं कर सकता। – Alnitak
संदर्भ के लिए कॉल .startActivity तुरंत लौटता है, अनिवार्य रूप से, यह सब कुछ बाद में शुरू होता है जैसे ही मुख्य ईवेंट थ्रेड मुक्त होता है। – sooniln