좋아, 그래서 핸들러에 대한 많은 자습서와 스레드를 읽었지만, 처리기에 대한 내 자신의 지식으로 더 발전한 것처럼 보입니다. 이것은 처음으로 처리기를 사용하여 저와 잘 어울리는 것입니다. 나는이 샘플 응용 프로그램을 특정 시간에 로그를 발생시키는 처리기에 있지만 시작 단추를 클릭 할 때 작동하지 않는 것 같습니다. 아래는 제 코드입니다.기본 방식으로 처리기 구현하기
public class Main extends Activity {
private long selectedTimeInMills;
private Handler handler;
private static final Calendar CALENDAR = Calendar.getInstance();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TimePicker timepicker = (TimePicker) findViewById(R.id.timePicker1);
final TextView timeText = (TextView) findViewById(R.id.time);
Button start = (Button) findViewById(R.id.button1);
handler = new Handler();
String textTime = formatDate(CALENDAR.getTimeInMillis(), "hh:mm a");
timeText.setText(textTime);
timepicker.setOnTimeChangedListener(new OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
CALENDAR.set(Calendar.HOUR_OF_DAY, hourOfDay);
CALENDAR.set(Calendar.MINUTE, minute);
selectedTimeInMills = CALENDAR.getTimeInMillis();
String textTime = formatDate(CALENDAR.getTimeInMillis(), "hh:mm a");
timeText.setText(textTime);
}
});
start.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Runnable runnable = new Runnable() {
public void run() {
Log.d("HandlerCheck", "Handler Fired! @ ("+selectedTimeInMills+") "+formatDate(selectedTimeInMills, "hh:mm a"));
}
};
boolean flag = handler.postAtTime(runnable, selectedTimeInMills);
Toast.makeText(Main.this, "Handler is Fired?:: "+flag, Toast.LENGTH_LONG).show();
}
});
}
}
참고 : 내 버튼을 클릭하고 그것이 true
를 반환하지만 난 여전히 승리 현재 시간에서 내 timepicker 1 분을 설정 한 경우에도 여전히 DDMS에 로그를 표시하지 않습니다 handler.postAtTime()
을 구현할 때 DDMS에서 로그 메시지를 발생시키지 마십시오
logcat에서 오류/예외가 표시됩니까? – Squonk
아무 것도 보이지 않는다. 그 시간이 지나면 실제로 아무 일도 일어나지 않는다. – lemoncodes
OK, 그냥 생각했다. 12 시간과 24 시간 시계 사이의 시간이 일치하지 않아야합니다. 예를 들어 오후 3 시간 (12 시간)은 15 시간 (24 시간)입니다. 확인하기 위해'onTimeChanged (...)'에 넘겨지는 것을 로깅 해보십시오. – Squonk