我创建了一项服务。现在我试图通过创建数据库类的boject来访问onstart()服务中的数据库。我想从某些表中选择记录,因为我使用了cursor.when我写了startManagingCursor(游标对象)我发生错误那里作为方法startManagingCursor (游标对象)未定义类型srvice。现在,如果我想移动光标或管理它,那么我如何从该表中选择记录?或者没有必要编写startManagingCursor(游标对象);在服务?如果我删除此功能,那么我会得到记录吗?这里我附加了代码:
@Override
public void onStart(Intent intent, int startid)
{
DBAdapter dbAdapter1 = DBAdapter.getDBAdapterInstance(Srvc_Sms_email.this);
dbAdapter1.openDataBase();
String[] sel = {"pid","date","datename"};
Cursor cNames = dbAdapter1.selectRecordsFromDB("datesdatabase",sel,null,null,null,null,null);
startManagingCursor(cNames);
cNames.moveToFirst();
int i1 =0;
while (cNames.isAfterLast() == false)
{
pid.add(cNames.getInt(0));
datelist.add(cNames.getString(1));
namelist.add(cNames.getString(2));
cNames.moveToNext();
}`
错误发生在startManagingCursor(cNames);
。
答案 0 :(得分:0)
您不能在服务中使用startManagingcursor。当活动被销毁时,托管游标负责关闭游标,并且当活动停止并重新启动时,它们将被停用并重新获取。在服务中这是不可能的。为了更好地理解验证这些答案 startManagingCursor() in a service?
和
What's the purpose of startManagingCursor?
没有startmanaging游标,你可以获得记录。但是你需要在完成时处理游标的关闭。 (cNames.close())
当您获得适配器时尝试
DBAdapter dbAdapter1 = DBAdapter.getDBAdapterInstance(getApplicationContext());