通过IntentService打开数据库时出错,可通过Activity访问数据库

时间:2013-01-14 06:07:50

标签: android database nullpointerexception intentservice

我有一个数据库帮助程序类dbHelper,它对数据库执行常规操作。我有一个打开的活动使用数据库进行操作。现在我想通过服务编辑数据库。所以我实现了下面的代码,它给出了一个零点异常错误。当我删除onHandleIntent中的所有代码并将其编译成日志时。但我不明白为什么这里有零点异常。数据库存在,因为它已通过活动使用。

Logcat在DbHelper.getAllItems()中表示空点异常。我不明白为什么Service类中应该有异常而不是活动类。

public class ItemStateService extends IntentService {

public static final String C_NAME = "item";

static final String TAG = "ItemStateService";

public ItemStateService() {
    super(TAG);
}

protected void onHandleIntent(Intent intent) {

    DbHelper dbHelper= new DbHelper (this);
    Cursor cursor;
    cursor = dbHelper.getAllItems();
    int count = 0;
    for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
       count++;
    }
    Log.d(TAG, "dbHelper launched with item count "+count); 
}
}

1 个答案:

答案 0 :(得分:0)

替换此行:

DbHelper dbHelper= new DbHelper (this);

用这个:

DbHelper dbHelper= new DbHelper (ItemStateService.this);