쓰레드의 run 메소드를 이용하여 시간을 체크하고 있다가,
시간이 끝나면 그 다음에 다른 액티비티로 가서 아이디를 입력 받는 화면을 구현 중인데,
이상하게도 버튼이벤트가 작동이 되질 않네요
디버그로 돌려보니깐 layout 을 보여주기 전에 액티비티를 구현하는 클래스에서 끝나버립니다.
EditText 로 값을 넣고 버튼을 눌러도 이벤트가 발생이 안되요,
다른 버튼이벤트는 잘되는데 여기서 왜 안되는지 모르겠네요,
밑에 소스코드 첨부할테니 한번 봐주세요,
---------------------------------------------------------
class TimeThread extends Thread {
public void run() {
while (true) {
value--;
if (value <= 0) {
break;
}
time.incrementProgressBy(-1);
time_handler.sendEmptyMessage(0);
if (next_check == true) {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
;
}
}
if (next_check == true) {
answer_count = 0;
next_check = false;
Intent intent = new Intent(SubMain.this, GetDB.class);
startActivity(intent);
finish();
}else
{
GameOver();
}
}
//
@Override
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
this.stop();
}
Handler time_handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0) {
;
}
}
};
}
--------------------------------------------------------------------------------------------------------------------------------
여기서 시간체크 후에 GameOver() 메소드로 가서 다른 액티비티로 startActivity 해서 넘어갑니다.
다른 스레드에서 버튼이벤트만 붙이겠습니다
---------------------------------------------------------------------------------------------------------------------------------
Button register_point = (Button)findViewById(R.id.record_aceept_button);
register_point.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
input_id = id.getText().toString();
if(input_id.equals(null))
{
score = SubMain.score;
c = db.rawQuery("select * from rank order by point desc", null);
c.moveToPosition(c.getCount() - 1);
delete_id = c.getString(c.getColumnIndex("id"));
delete_point = c.getString(c.getColumnIndex("point"));
delete_date = c.getString(c.getColumnIndex("sysdate"));
if (c.getCount() < 10) // 반환된 레코드가 10줄이 되지 않으면 그냥 삽입
{
db.execSQL("insert into rank values('" + input_id + "',"
+ score + ", current_date);");
} else { // 반환된 레코드가 10줄이
db.execSQL("update rank set id='" + id + "',point="
+ SubMain.score
+ ",sysdate=current_date where id='" + delete_id
+ "', point=" + delete_point + ", sysdate="
+ delete_date + ";");
}
Intent intent = new Intent(WriteRank.this, Ending.class);
startActivity(intent);
finish();
}
}
});
if(db!=null)db.close();
if(rankdb!=null) rankdb.close();
}
------------------------------------------------------------------------------------------------------
제가 의심이 가는 로그화면 내용의 일부도 올리겠습니다.
-----------------------------------------------------------------------------------------------------
09-30 23:51:52.827: DEBUG/dalvikvm(2807): threadid=15: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.207: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.477: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.527: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.577: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.597: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.677: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.727: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.777: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.797: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:53.857: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:54.457: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:54.897: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.007: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.067: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.187: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.227: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.297: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.367: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.488: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.547: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.627: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.657: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:55.740: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:59.108: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:59.337: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:59.437: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:59.497: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:59.547: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:59.577: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:51:59.627: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:52:00.417: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:52:01.707: WARN/ActivityManager(53): Launch timeout has expired, giving up wake lock!
09-30 23:52:01.947: WARN/ActivityManager(53): Activity idle timeout for HistoryRecord{43d371c8 cic.ulsan.ac.kr.kcrossword/.WriteRank}
09-30 23:52:03.077: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:52:07.586: DEBUG/dalvikvm(2807): threadid=3: still suspended after undo (sc=1 dc=1 s=Y)
09-30 23:52:11.072: WARN/dalvikvm(2807): WARNING: single-step active for 0x2e3b08; adding 0xbd00
09-30 23:52:11.967: WARN/ActivityManager(53): Activity destroy timeout for HistoryRecord{43dac8f0 cic.ulsan.ac.kr.kcrossword/.SubMain}
09-30 23:52:30.077: INFO/ActivityManager(53): Displayed activity cic.ulsan.ac.kr.kcrossword/.WriteRank: 38135 ms (total 38135 ms)
로그로는 Activity 대기 화면이 Timeout 되었다고 나옵니다. 두 쓰레드간의 통신시 시간이 맞지 않는 부분이 발생되어 이벤트가 먹지 않는것은 아닌지 확인해 보시는게 좋을 것 같습니다.