안드로이드 개발 질문/답변
(글 수 45,052)
if(!mIsRunning)
{
Log.d(TAG, "run(), mIsRunning is false");
return;
}
else
{
date1_string =date1.split("\n");
date2_string =date2.split("\n");
record_string =record.split("\n");
for(int i=0;i<record_string.length;i++){
date1 = date1_string[i];
String date1_sub1 =date1_string[i].replace("-", "");
int date1_int = Integer.parseInt(date1_sub1);
date2 = date2_string[i];
String date2_sub1 = date2_string[i].replace("-", "");
int date2_int = Integer.parseInt(date2_sub1);
String curdate = (String) DateFormat.format("MMdd", System.currentTimeMillis());
int cur_date = Integer.parseInt(curdate);
if(date1_int<=cur_date && cur_date <= date2_int){
Log.d(TAG, "run(), mIsRunning is true");
Intent intent = new Intent(AlarmAlert.this, alarmdialog.class);
intent.putExtra("record_string", record_string[i]);
intent.putExtra("ItemName", ItemName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
break;
}
}
mHandler.postDelayed(this, DELAY_TIME);
mIsRunning = true;
php파일에서 xml을 파싱해와서
현재 날짜와 일치하면 알람다이어로그를 생성하는소스입니다.
전 버전
String[] record_string = record.split("\n");
String[] date_string = date.split("\n");
for(int i=0;i<record_string.length;i++){
Log.d(TAG, "record "+record_string[i]+ " date "+date_string[i]);
String date_str = date_string[i];
date_str=date_str.replace("-", "");
int date = Integer.parseInt(date_str);
String nowdate = (String) DateFormat.format("MMdd", System.currentTimeMillis());
int now_date = Integer.parseInt(nowdate);
if(date ==now_date){
Log.d(TAG, "record "+record_string+ " date "+date_string);
Log.d(TAG, "run(), mIsRunning is true");
Intent intent = new Intent(AlarmAlert.this, alarmdialog.class);
intent.putExtra("record_string", record_string[i]);
intent.putExtra("ItemName", ItemName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
break;
전 버전에서는anr발생없이 잘 되었는데
위 소스처럼 바꾸면서 anr이 발생합니다.
고수님들 왜 anr이 발생하는지 아시면 알려주세요~




어디선가 10초이상 잡고 있는게 있단 얘긴데, 그냥 간단하게 AsyncTask 로 처리하세요.