기본적으로 응용 프로그램이 시작될 때부터 0 시부 터 시작하는 초와 분을 추적하여 TextView에 표시합니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까?간단한 디지털 타이머를 안드로이드로 생성합니다.
1
A
답변
3
Timer을 사용하면 초 단위로 TimerTask을 예약 할 수 있습니다.
- 먼저 당신은 당신이 양식 XX의 String으로이 차이를 포맷 (
beginning time - current time
) - 소요되는 시간을 얻을 TimerTask를 작업에
- 다음 시작 시간을 : XX를 DateFormat
- 함께 TextView를이 문자열로 업데이트하십시오.
TimerTask 작업에서 TextView를 업데이트 할 때 UI 스레드에서 실행되지 않으므로 문제가 발생할지 모르겠습니다. 이 작업을 수행하려면 Activity.runOnUiThread을 사용할 수 있습니다.
4
타이머가 비 UI 스레드를 시작하기 때문에 TextView 업데이트에 타이머를 사용하지 않는 것이 좋습니다. 귀하의 경우 Timer는 Handler 클래스로 대체 될 수 있습니다. 또한이 새로운 비 UI 스레드의 오버 헤드를 피할 수 있습니다. Here은 예입니다
private Handler mHandler = new Handler();
OnClickListener mStartListener = new OnClickListener()
{
public void onClick(View v)
{
if (mStartTime == 0L)
{
mStartTime = System.currentTimeMillis();
mHandler.removeCallbacks(mUpdateTimeTask);
mHandler.postDelayed(mUpdateTimeTask, 100);
}
}
};
.........
private Runnable mUpdateTimeTask = new Runnable()
{
public void run()
{
final long start = mStartTime;
long millis = SystemClock.uptimeMillis() - start;
int seconds = (int) (millis/1000);
int minutes = seconds/60;
seconds = seconds % 60;
if (seconds < 10)
{
mTimeLabel.setText("" + minutes + ":0" + seconds);
}
else
{
mTimeLabel.setText("" + minutes + ":" + seconds);
}
mHandler.postAtTime(this,start + (((minutes * 60) + seconds + 1) * 1000));
}
};
+1
이 답변은 아마도'currentTimeMillis'가 1970 년 이래로 시간을 반환 할 것이므로'millis'의 값은 음수가 될 것입니다 –
2
Runnable run = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
long millis = System.currentTimeMillis() - starttime;
int seconds = (int) (millis/1000);
int minutes = (seconds%3600)/60;
int hours = seconds/3600;
seconds = seconds % 60;
et1.setText(String.format("%02d:%02d:%02d",hours, minutes, seconds));
// et2.setText(String.format("%02d:%02d:%02d",hours, minutes, seconds));
// et3.setText(String.format("%02d:%02d:%02d",hours, minutes, seconds));
h2.postDelayed(this, 500);
}
};
class firstTask extends TimerTask {
public void run() {
handler.sendEmptyMessage(0);
}
};
통해 UR 프로그램에서 그것을 시도 ...!
관련 문제
- 1. 디지털 스크럼 보드 용 간단한 설치 도구
- 2. 메서드에 타이머를 추가하는 간단한 방법은 무엇입니까
- 3. 간단한 트위스트 서버가 타이머를 쓰지 않습니다
- 4. 더 간단한 자바 스크립트 타이머를 찾고
- 5. Pacman 고스트가 안드로이드로 이동
- 6. 언제 자바에서 안드로이드로 이동
- 7. URL에 입력을 안드로이드로 보내기
- 8. RTSP를 안드로이드로 스트리밍하는 서버
- 9. 안드로이드로 .NET Webservice를 호출하십시오.
- 10. 안드로이드로 문자열 타임 스탬프 포맷하기
- 11. 안드로이드에 타이머를 보여주는
- 12. Android에서 3 초 타이머를 만드는 가장 간단한 방법은 무엇입니까?
- 13. 타이머를 사용하여 텍스트를 랜덤 화하는 간단한 jQuery 스크립트 수정
- 14. 디지털 시계
- 15. 디지털 서명
- 16. 디지털 스톱워치
- 17. timer_create 및 timer_settime이 세그먼트 화 오류를 생성합니다.
- 18. iPhone 탐색 바에서 타이머를 추가하십시오.
- 19. 비트 맵에서 안드로이드로 더 많은 공간을 확보하십시오.
- 20. POST 후 안드로이드로 돌아 오는 URL 받기
- 21. 안드로이드로 보내기 php webservice json 응답에
- 22. 로컬 XML 파일을 안드로이드로 구문 분석
- 23. 편집 텍스트에서 안드로이드로 Spinner를 동적으로 채 웁니다.
- 24. 아이폰 앱을 안드로이드로 번역/트랜스 포팅하기
- 25. xml은 로컬 파일에서 안드로이드로 구문 분석
- 26. 보기에서 활동으로 이동하고 안드로이드로 돌아 오는 방법
- 27. 키보드 포커스를 안드로이드로 옮기는 방법은 무엇입니까?
- 28. 이미지를 한 액티비티에서 다른 액티비티로 안드로이드로 이동
- 29. tcpdf 및 디지털 서명 인증
- 30. oAuth와 그 바이오 디지털 재즈
비슷한 것을 구현해야했고 [다음] (http://android-developers.blogspot.com/2007/11/stitch-in-time.html) android 개발자 블로그 게시물이 도움이됨을 발견했습니다. 모두 제일 좋다. –
내가 할 수없는 일은 그 코드를 얻는 것 같습니다. 2 개의 onClick 리스너, mStartListener 및 mStopListener를 만들었지 만 코드는 아무 것도 첨부되지 않은 것을 보여주지 않습니다. mStartListener를 버튼에 연결하면 한 번 이상한 숫자로 업데이트됩니다. 당신은 아직도 그 일을하기 위해 사용한 코드가 있습니까? 당신의 도움을 주셔서 감사합니다. – clayton33