我很确定使用cursor
实例销毁了IntentService
,但我只是想确保没有内存泄漏。如果这是正常的做法。我正在查询我的自定义ContentProvider
。
class MyService extends IntentService {
protected void onHandleIntent(Intent intent) {
Cursor cursor = getContentResolver().query(
MyContentProvider.CONTENT_URI, null, null, null, null);
if (cursor.getCount() == 0) {
return; // exit the method
} else {
cursor.close();
}
// some code...
}
}
答案 0 :(得分:1)
每次使用光标时,都应将其包装在try
- finally
中并关闭它:
Cursor cursor = …;
if (cursor == null)
return;
try {
…
} finally {
cursor.close();
}
这将确保即使抛出异常也不会发生内存泄漏。
Java 7带来了try-with-resources,但只有Android API 19+支持它:
try (Cursor cursor = …)
{
…
} // Cursor closed automatically