(클릭 하시면 크게 보입니다.)
일단 구글링 해본 결과 dialog를 dismiss() 시켜주지 않아서 뭔가가 누수된다고 하더라구요.
그러면서 onPause()에 dismiss()를 호출해라, onDestroy()에서 dismiss()를 호출해라, onStop()에서 dismiss()를 호출해라라고 하던데..
결국 다 안됐습니다.
아래는 dialog 생성 코드입니다.
private final void saveNote()
{
if (mCursor != null)
{
final ContentValues values = new ContentValues();
values.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis());
final String text = mText.getText().toString();
int length = text.length();
if (mState == STATE_INSERT)
{
if (length == 0)
{
finish();
return;
}
String title = text.substring(0, Math.min(30, length));
if (length > 30)
{
int lastSpace = title.lastIndexOf(' ');
if (lastSpace > 0)
{
title = title.substring(0, lastSpace);
}
}
AlertDialog.Builder builder = new AlertDialog.Builder(NoteEditor.this);
final EditText input = new EditText(NoteEditor.this);
input.setText(title);
input.selectAll();
builder.setCancelable(false);
builder.setTitle(R.string.title_edit_title);
builder.setView(input);
builder.setPositiveButton(R.string.button_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id)
{
values.put(NoteColumns.TITLE, input.getText().toString().trim());
values.put(NoteColumns.NOTE, text);
try
{
getContentResolver().update(mUri, values, null, null);
}
catch (NullPointerException e)
{
Log.e(TAG, e.getMessage());
}
finish();
}
});
builder.show();
return;
}
values.put(NoteColumns.NOTE, text);
try {
getContentResolver().update(mUri, values, null, null);
} catch (NullPointerException e) {
Log.e(TAG, e.getMessage());
}
finish();
}
}
메모장인데요, 백키를 누르면 메모의 제목을 입력하라는 dialog 창을 띄우게 구현되어있습니다.
저 dialog 때문에 별 짓을 다해도 계속 위에 언급한 에러가 뜨네요.
아시는 분은 제발 도움 좀 주세요..ㅠ_ㅠ
음.. 왠지 알것 같습니다..
혹시 백키를 누르면 dialog 창은 나오긴 하는데.. 뒷단의 액티비티는 백키를 누르는순간 다른 액티비티로 인텐트를 날려
화면전환이 이루어지는것 같은데요???
아마도 그런식으로 된다면... 이 dialog창은 다른 액티비티로 가기전에 dismiss가 되어야 합니다. 그래서 님이 검색해보신
그런 내용이 나왔던 거구요.. 원래 처음 그리기로한 activity가 사라졌기때문에 이것을 그리긴 합니다만 원래 그리기로 한 그곳에서 지워지지 않고 dialog를 띠운상태에서 배경이 사라졌기때문에 에러가 발생한거에요..
그렇기 때문에 다이얼로그에서 이벤트를 받아서 intent를 날리신다던가 다른 플로어를 고민해 보세요.