इस वर्ग, AnimationThread
पर विचार करें:रन() को केवल एक बार क्यों बुलाया जा रहा है?
class AnimationThread implements Runnable {
public void pause() {
doAnimation = false;
}
public void doStart(){
doAnimation = true;
}
@Override
public void run() {
// TODO Auto-generated method stub
if (doAnimation) {
//my code
}
try {
Thread.sleep(500);
}
catch (InterruptedException e) {
}
}
}
अब मैं एक गतिविधि की onCreate
में इस सूत्र शुरू करने कर रहा हूँ (बस किसी न किसी कोड दिखाते हुए):
AnimationThread animRunnable = new AnimationThread();
animationThread = new Thread(animRunnable);
animationThread.start();
लेकिन run()
सिर्फ एक बार कहा जाता रहा है (मैं का पता लगाया पुष्टि करने के लिए एक लॉग)। मैं सिर्फ यह जानना चाहता हूं कि जब मैंने धागा शुरू किया तो run()
को 500 नींद के साथ बार-बार बुलाया नहीं जा रहा है। इसे सिर्फ एक बार बुलाया जाता है।
धन्यवाद। मुझे तर्क मिला। मैं सुनिश्चित कर रहा हूं कि मेरे तर्क कोड को बार-बार चल रहा है। असल में मेरी परिस्थिति में मैं अपने उद्देश्य के लिए infinetly निष्पादित करने के लिए रन() को चलाने के लिए चाहता हूं, इसलिए मैंने अपने तर्क को अंदर (सत्य) के अंदर संलग्न किया है और एनीमेशन डॉन एनीमेशन स्टेट वैरिएबल की स्थिति के आधार पर होता है। धन्यवाद। –
यह एक आम पैटर्न है। हालांकि, संभवतः आप प्रोग्राम को बंद करने के लिए थ्रेड को अंततः समाप्त करना चाहते हैं। या आप इसके लिए एक डेमॉन थ्रेड का उपयोग कर सकते हैं। – Thilo