मैं एंड्रॉइड 2.2 के लिए क्रोनोमीटर/उलटी गिनती टाइमर ऐप डिज़ाइन करने की प्रक्रिया में हूं और एक बटन को क्रोनोमीटर और दोनों टाइमर को शुरू करने के लिए प्रेस करना चाहता हूं। तो, आदर्श रूप में, मुझे पर सेकंड्स (समय) पर एक ही उदाहरण में बदलने के लिए क्रोनोमीटर और टाइमर दोनों चाहिए। (क्रोनोमीटर गिनती होने के बावजूद टाइमर गिना जाएगा)। जब से मैं एंड्रॉयड द्वारा प्रदान की ठीक घड़ी और टाइमर कार्यक्षमता का उपयोग कर रहा है, मैं कोड का निम्न भाग लिखा है जब उपयोगकर्ता 'प्रारंभ करें' बटनएंड्रॉइड में एक साथ दो (या अधिक) फ़ंक्शंस शुरू करना
private boolean mStartPressedOnce = false;
long mTimeWhenStopped = 0;
Chronometer mChronometer;
MyCounter mCounter;
...
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.StartButton:
// Perform some initialization for the chronometer depending
// on the button press
if (mStartPressedOnce == false) {
mChronometer.setBase(SystemClock.elapsedRealtime());
} else {
mChronometer.setBase(SystemClock.elapsedRealtime() + mTimeWhenStopped);
}
// Perform the initialization for the timer
mCounter = new MyCount(45000, 1000);
// Fire up the chronometer
mChronometer.start();
// Fire up the timer
mCounter.start();
break;
case R.id.ResetButton:
// Reset the chronometer
mChronometer.setBase(SystemClock.elapsedRealtime());
mTimeWhenStopped = 0;
break;
case case R.id.StopButton:
mStartPressedOnce = true;
// Stop the chronometer
mTimeWhenStopped = mChronometer.getBase() - SystemClock.elapsedRealtime();
mChronometer.stop();
break;
}
...
public class MyCounter extends CountDownTimer {
@Override
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
// Nothing to do here
}
@Override
public void onTick(long millisUntilFinished) {
long seconds = (long) (millisUntilFinished/1000);
long minutes = (long) ((millisUntilFinished/1000)/60);
long hours = (long) (((millisUntilFinished/1000)/60)/60);
// Do some formatting to make seconds, minutes and hours look pretty
// Update the timer TextView
(TextView) findViewById(R.id.CountDownTimerTextView))
.setText(hours + ":" + minutes + ":" + seconds);
}
}
प्रेस हालांकि यह ठीक घड़ी और टाइमर पर सेकंड की तरह दिखता है में हैं सिंक प्रारंभ में, थोड़े समय के बाद, वे बंद हो जाते हैं और दोनों के लिए दूसरे अपडेट अलग-अलग होते हैं।
सोच रहा था कि मैं इसे ठीक करने के लिए क्या कर सकता था। मैं भर में आया था - और इस थ्रेड
Running multiple AsyncTasks at the same time -- not possible?
मुझे लगता है हो सकता है एक डिजाइन बदलाव की जरूरत पढ़ा लेकिन मुझे यकीन है कि वास्तव में क्या किया जाना चाहिए नहीं कर रहा हूँ।
संपादित करें: समय की गणना घड़ी का उपयोग कर के लिए ठीक घड़ी और टाइमर और विधि के लिए शामिल प्रकार - jolivier और njzk2 के सुझावों के अनुसार
आपके एम क्रोनोमीटर और एमकॉन्टर क्या हैं और आप समय को कैसे मापते हैं? – njzk2
आप System.nanoTime() या currentTimeMillis() के बजाय विजेट का उपयोग क्यों कर रहे हैं? – Shark
@ शार्क, सुनिश्चित नहीं है कि मुझे आपके प्रश्न का उत्तर पता है। धन्यवाद। – aLearner