Android
धागा
खोज…
इसके उदाहरण के साथ थ्रेड उदाहरण
आवेदन शुरू करते समय सबसे पहले मुख्य धागे को निष्पादित किया जाता है। यह मुख्य धागा आवेदन के सभी यूआई अवधारणा को संभालता है। यदि हम उस कार्य को लंबे समय तक चलाना चाहते हैं जिसमें हमें UI की आवश्यकता नहीं है तो हम उस कार्य को पृष्ठभूमि में चलाने के लिए थ्रेड का उपयोग करते हैं।
यहाँ थ्रेड का उदाहरण दिया गया है जो झटका का वर्णन करता है:
new Thread(new Runnable() {
public void run() {
for(int i = 1; i < 5;i++) {
System.out.println(i);
}
}
}).start();
हम थ्रेड के ऑब्जेक्ट को बनाकर थ्रेड बना सकते हैं, जिसमें थ्रेड चलाने के लिए थ्रेड Thread.run()
विधि है। run()
विधि को start()
विधि द्वारा कहा जाता है।
हम कई थ्रेड को स्वतंत्र रूप से भी चला सकते हैं, जिसे मल्टीट्रेडिंग के रूप में जाना जाता है। इस धागे में नींद की कार्यक्षमता भी होती है जिसके द्वारा वर्तमान में निर्दिष्ट समय के लिए सोने के लिए धागा निष्पादित करना (अस्थायी रूप से निष्पादन को समाप्त करना) है। लेकिन नींद को बाधित करता है। इसलिए, हमें इस तरह की कोशिश / पकड़ का उपयोग करके इसे संभालना होगा।
try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);}
पृष्ठभूमि थ्रेड से UI अपडेट कर रहा है
नेटवर्क संचालन या लंबे समय तक चलने वाले कार्यों के लिए पृष्ठभूमि थ्रेड का उपयोग करना आम है, और फिर आवश्यकता होने पर परिणाम के साथ यूआई को अपडेट करें।
यह एक समस्या बनती है, क्योंकि केवल मुख्य थ्रेड UI को अपडेट कर सकता है।
समाधान runOnUiThread()
पद्धति का उपयोग करना है, क्योंकि यह आपको पृष्ठभूमि थ्रेड से UI थ्रेड पर कोड निष्पादन शुरू करने की अनुमति देता है।
इस सरल उदाहरण में, एक थ्रेड शुरू किया जाता है जब गतिविधि बनाई जाती है, तब तक चलता है जब तक कि 42
की जादुई संख्या अनियमित रूप से उत्पन्न नहीं हो जाती है, और फिर इस स्थिति के पूरा होने पर यूआई को अपडेट करने के लिए runOnUiThread()
विधि का उपयोग करता है।
public class MainActivity extends AppCompatActivity {
TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.my_text_view);
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
//do stuff....
Random r = new Random();
if (r.nextInt(100) == 42) {
break;
}
}
runOnUiThread(new Runnable() {
@Override
public void run() {
mTextView.setText("Ready Player One");
}
});
}
}).start();
}
}