2011-04-19 3 views
0

내가 가지고 내가 발견하고 새로운 메신저 여전히 안드로이드 학습 그래서이 코드에서 예를 들어 테이블안드로이드 sqlite가 지연

읽기에 지연을 추가하는 방법을 알고에 도움이 필요하세요 예는이 코드를 내가 2 행을 넣은 다음 읽으십시오. 내가하고 싶은 것은 첫 번째 행을 읽고 5 초를 기다린 다음 두 번째 행을 읽고 5 초를 기다리는 것입니다 ..... ????

package net.learn2develop.Database; 

import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.widget.Toast; 

public class DatabaseActivity extends Activity { 
    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     DBAdapter db = new DBAdapter(this); 

     //---add 2 titles--- 
     db.open();   
     long id; 
     id = db.insertTitle(
       "0470285818", 
       "java ++ :)", 
       "someone");   
     id = db.insertTitle(
       "047017661X", 
       "Professional Programming", 
       "someone2"); 
     db.close(); 

     //---get all titles--- 
     db.open(); 
     Cursor c = db.getAllTitles(); 
     if (c.moveToFirst()) 
     { 
      do {   
       DisplayTitle(c); 
      } while (c.moveToNext()); 
     } 
     db.close(); 

    } 

    public void DisplayTitle(Cursor c) 
    { 
     Toast.makeText(this, 
       "id: " + c.getString(0) + "\n" + 
       "ISBN: " + c.getString(1) + "\n" + 
       "TITLE: " + c.getString(2) + "\n" + 
       "PUBLISHER: " + c.getString(3), 
       Toast.LENGTH_LONG).show();   
    } 

} 
+0

을, 왜 이렇게할까요? – pecka85

답변

0

올바른 방법을 참조하십시오 - 그것은 메인 스레드를 차단하지 않습니다, UI가 응답 유지 있도록 : 호기심에서

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
public void run() { 
    // Get new entry 
}, 5000); // 5000 miliseconds 
+0

Runnable 실행은 핸들러를 생성 한 스레드 (일반적으로 메인 스레드)를 차단하고 해당 루퍼에서 실행 가능한 코드를 실행합니다. – milosmns

1

당신은 메인 스레드의 모든 장기 실행 기능을 넣으면 안됩니다 :

는 코드입니다. onCreate는 항상 신속하게 실행 한 다음 반환해야합니다. 그렇지 않으면 안드로이드 OS에서 ANR (Application Not Responding)으로 죽일 수 있습니다.

TimerTask를 사용할 때마다 매번 n 씩 증가하면서 n 번째 레코드를 가져 오도록하십시오. TimerTask는 스레드에서 메소드를 실행할 것이고 주 스레드에서만 UI 호출을 할 수 있다는 점에 유의하십시오. 이 문제를 해결하려면 Activty.runOnUiThread()를 사용하십시오.