마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

클래스에서 this 사용하는 방법

0 추천

클래스에서 아래와 같이 context를 사용하니 에러는 나지 않는데

단말기에서 앱이 그냥 죽어버리는데요..

this나 그냥 context를 쓰면 에러가 나구요.. 어떻게 변경하면 좋을까요..?

 

public class A{
    
    static Context context;

    public A(Context context){
        this.context = context;
    }
    
    // DB 내용 ArrayList에 넣기
    public static ArrayList<A> createContactsList() {
        
        // SQLite 관련
        String selectQuery = "SELECT  * FROM ATable";

        MySQLiteOpenHelper db_open = new MySQLiteOpenHelper(context);
        SQLiteDatabase db = db_open.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        if (cursor.moveToFirst()) {
            do {
                String date = cursor.getString(1);

                contacts.add(new A(date));

            } while (cursor.moveToNext());
        }

        db.close();
    
        return contacts;
    }
}

 

익명사용자 님이 2019년 3월 20일 질문

1개의 답변

0 추천
context를 static 변수에 저장하지 말고 static 함수 내에서 바로 사용하세요.

public static ArrayList<A> createContactsList(Context context) {
        String selectQuery = "SELECT  * FROM ATable"
        MySQLiteOpenHelper db_open = new MySQLiteOpenHelper(context);

 

context는 static 변수에 저장하면 안되고, 항상 약한 참조에 저장해야 합니다.

안 그러면 메모리 누수 발생합니다.
franny (1,760 포인트) 님이 2019년 3월 20일 답변
...