1
간단한 타이머를 만들려고합니다.Android 용 간단한 알림
package com.anta40.reminder;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TabHost.TabSpec;
public class Reminder extends Activity{
public final int TIMER_DELAY = 1000;
public final int TIMER_ONE_MINUTE = 60000;
public final int TIMER_ONE_SECOND = 1000;
Timer timer;
TimerTask task;
TextView tv;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
timer = new Timer();
task = new TimerTask() {
@Override
public void run() {
tv = (TextView) findViewById(R.id.textview1);
tv.setText("BOOM!!!!");
tv.setVisibility(TextView.VISIBLE);
try {
this.wait(TIMER_DELAY);
}
catch (InterruptedException e){
}
tv.setVisibility(TextView.INVISIBLE);
}
};
TabHost tabs=(TabHost)findViewById(R.id.tabhost);
tabs.setup();
TabSpec spec = tabs.newTabSpec("tag1");
spec.setContent(R.id.tab1);
spec.setIndicator("Clock");
tabs.addTab(spec);
spec=tabs.newTabSpec("tag2");
spec.setContent(R.id.tab2);
spec.setIndicator("Settings");
tabs.addTab(spec);
tabs.setCurrentTab(0);
RadioGroup rgroup = (RadioGroup) findViewById(R.id.rgroup);
rgroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.om){
timer.schedule(task, TIMER_DELAY, 3*TIMER_ONE_SECOND);
}
else if (checkedId == R.id.twm){
timer.schedule(task, TIMER_DELAY, 6*TIMER_ONE_SECOND);
}
else if (checkedId == R.id.thm){
timer.schedule(task, TIMER_DELAY, 9*TIMER_ONE_SECOND);
}
}
});
}
}
라디오 버튼을 클릭 할 때마다 타이머가 시작되어야합니다. 하지만 왜 시작되지 않습니까?
>> 컨트롤을 안드로이드에 반환하기 전까지는 효과가 없습니다. 어떻게 돌려 줄 수 있습니까? >> 세 번째, 코드를 주 응용 프로그램 스레드로 옮기면 wait() 호출과 같이 해당 스레드를 차단하지 마십시오. 주어진 간격 후에 텍스트보기 "붐"을 보이지 않게하고 싶습니다. 그러므로 wait(). 나는 지금 더 나은 해결책을 모른다. – anta40
"그럼 어떻게 돌려 줄 수 있니?" 돌아 오는 (즉, 현재있는 콜백을 종료). "일정 기간이 지나면 텍스트 뷰"붐 "이 보이지 않게되기를 기다리고 있습니다. 따라서 잠시 기다려주십시오. 지금은 더 나은 해결책을 모릅니다." View 나 Handler에서'postDelayed()'를 사용하여 원하는 지연 시간 후에'Runnable'을 실행하도록 스케쥴하고,'Runnable'의'run()'메소드에서'TextView'를 보이지 않게하십시오. – CommonsWare