2013-10-06 2 views
0

나는 임 작업을하는 앱을 가지고 있는데, 애플리케이션을 닫고 다시 시작할 때 내 데이터베이스에 어떤 일이 일어나는지 궁금합니다. onPause, onResume 및 onDestroy에서 어떤 일이 발생 하는지를 지정하지 않았기 때문에 (왜냐하면 내가 무엇을 지정해야할지 모르기 때문입니다) . 여기 응용 프로그램을 시작할 때마다 SQLite 데이터베이스가 새로 작성됩니까?

클래스 내 DBTools

public class DBTools extends SQLiteOpenHelper { 

    public DBTools(Context applicationcontext) { 
     super(applicationcontext, "rggarb.db", null, 1); 
    } 

    public void onCreate(SQLiteDatabase database) { 

     String tableUsers = "CREATE TABLE users (userId INTEGER PRIMARY KEY, userName TEXT, userEmail TEXT, userPassword TEXT, userAvatar TEXT, userSex TEXT)"; 
     database.execSQL(tableUsers); 

    } 

    public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) { 
     String dropTableUsers = "DROP TABLE IF EXISTS tableUsers"; 
     database.execSQL(dropTableUsers); 
     onCreate(database); 
    } 
      //some CRUD methods here, irrelevant for this question 

} 

이며, 여기에 내가 MainActivity에서

작동 방법은 다음과 같습니다

public class MainActivity extends Activity { 
    DBTools dbTools = new DBTools(this); 

는 사용자가 활동을 가입하고 간다 :

공개 클래스 가입 확장 활동 {

private DBTools dbTools = new DBTools(this); 
    //later on in this class I do some checks and inserts. 

나는 뭔가 잘못되었을 수도 있고, DB의 수명주기에 익숙하지 않은 것 같습니다. 그것은 각 onDestroy에서 공백이됩니까? MainActivity에서 매번 인스턴스화해야합니까? 인스턴스화 한 경우 가입 활동에서 다시 인스턴스화해야합니까?

답변

2

내가 아는 한, 아니오. 응용 프로그램이 데이터베이스를 만들면 해당 데이터베이스가 저장되고 응용 프로그램 종료 및 기타 수명주기 활동을 통해 데이터가 유지됩니다.

데이터베이스 항목을 프로그래밍 방식으로 삽입/작성하는 경우 한 번만 수행하면됩니다. 그렇지 않으면 반복 데이터가 생성됩니다.

DB를 삭제하는 코드를 작성한 다음 아니요, 데이터베이스는 거기에 있습니다.

그래서, 당신의 질문에 대답합니다 .. 당신이 항목을 삽입 한 후

Does it go blank on each onDestroy?

아니, 그들은 영원히있을 것입니다. 그렇지 않으면 SQLite는 데이터 지속성을 위해 권장되지 않습니다. 내가 쿼리를 실행해야하는 경우, 그냥 해당 인스턴스를 호출하고 쿼리를 할 것이다, 그래서

Do I need to instantiate it in MainActivity every time?

나는 보통 내 활동에 내 DB 도우미의 전역 인스턴스를 만듭니다.

If I have instantiated it there, do I need to instatiate it yet again in Signup Activity?

당신은 정말 당신이 그것을 만들어 한 번으로 모든 것을 다시 데이터베이스를 "인스턴스화"하지 않습니다, 그것은 당신의 응용 프로그램입니다. 귀하의 가입 액티비티에서 db 도우미의 인스턴스를 생성하면 해당 액티비티가 쿼리를 실행할 수 있습니다.

+0

onUpgrade의 구현에 의존 내가 응용 프로그램을 다시 설치하는 경우, 다음 DB가 사라 졌어요? –

+0

예. 응용 프로그램을 재설치하면 db 데이터가 지워집니다. – Razgriz

+0

MainActivity에서 인스턴스화 한 경우 가입 활동에서 다시 인스턴스화해야합니까? –

2

DB는 데이터베이스 버전이 변경 (수퍼 생성자 호출에서 전달)되거나 응용 프로그램이 제거 된 경우에만 다시 작성됩니다. 오른쪽

DB 버전이 변경되면

는 영향()

관련 문제