मैं थ्रेड, हैंडलर, लूपर्स इत्यादि के बारे में बहुत कुछ पढ़ रहा हूं और मैं बहुत उलझन में हूं। मेरे ऐप में मैं पहली गतिविधि पृष्ठभूमि कार्यकर्ता शुरू करना चाहता हूं। यह पृष्ठभूमि कार्यकर्ता लगातार टीसीपी सॉकेट से डेटा का अनुरोध करेगा और (आशा है कि) डेटा आने पर यूआई थ्रेड में नई जानकारी पोस्ट करेगा। यदि उपयोगकर्ता किसी नई गतिविधि में संक्रमण करता है तो पृष्ठभूमि को इसकी बात करने की आवश्यकता होती है लेकिन केवल यूआई थ्रेड को अलग-अलग संदेश भेजते हैं ताकि यह तदनुसार नया लेआउट अपडेट कर सके।एंड्रॉइड: बैकग्राउंड थ्रेड से यूआई थ्रेड तक संदेश पास करने का उचित तरीका?
यहाँ मैं अब तक किया है ... यह मेरा मुख्य गतिविधि फ़ाइल
public class MyTCPTest extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the layout
setContentView(R.layout.main);
// create a handler to handle messages from bg thread
Handler handler = new Handler();
BgWorkerThread bgw = new BgWorkerThread();
bgw.start();
}
अन्य फ़ाइल मैं इस तरह मेरी पृष्ठभूमि कार्यकर्ता धागा परिभाषित में में है ...
public class BgWorkerThread extends Thread {
@Override
public void run(){
while(true)
{
try {
// simulate a delay (send request for data, receive and interpret response)
sleep(1000);
// How do I send data here to the UI thread?
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
हैं यूआई एक अलग गतिविधि के लिए स्विच करेगा यह धागा चल रहा है? साथ ही, यह धागा कैसे पता चलता है कि संदेश भेजने के लिए कौन सी गतिविधि है? जाहिर है, मैं चाहता हूं कि यह हमेशा उस गतिविधि को डेटा भेज दें जो वर्तमान में सक्रिय है। क्या यह स्वचालित रूप से होता है?
अंत में, जब यूआई एक अलग गतिविधि पर स्विच करता है तो bgworker को अधिसूचित करने की आवश्यकता होती है ताकि वह नए गतिविधि लेआउट से प्रासंगिक डेटा का अनुरोध करना शुरू कर सके। परिवर्तन के कार्यकर्ता को सूचित करने का सबसे अच्छा तरीका क्या है? क्या मैं बस BgWorkerThread क्लास में सार्वजनिक विधि नहीं बना सकता जिसे क्रियाएँ लोड होने पर बुलाया जा सकता है?
ट्रैविस लिंक के लिए धन्यवाद हालांकि मैं अभी भी उलझन में हूं। अंतर यह है कि आपका सभी कोड एक ही कक्षा में प्रतीत होता है। मेरा पृष्ठभूमि कार्यकर्ता यह अपनी कक्षा है जो थ्रेड को बढ़ाता है। यह गतिविधि वर्ग से एक अलग वर्ग है तो मैं उस वर्ग/गतिविधि के हैंडलर तक कैसे पहुंचूं? – PICyourBrain