一个服务中的startManagingCursor()?

时间:2010-12-31 11:10:38

标签: android sqlite service android-activity cursor

有没有办法在服务中使用startManagingCursor()而不是活动,结果相同(如here所示)?

更具体地说,我想基于服务的生命周期来管理给定的Cursor的生命周期。例如,当服务被销毁时,它将自动调用给定Cursor上的deactivate()。此外,当创建/再次启动服务时,它将调用requery()方法。

  • 使用其他人是否可行 适当的方法实施 Service.class?
  • 以其他方式可行吗?
  • 或者,它完全没有意义吗?

2 个答案:

答案 0 :(得分:7)

  

有没有办法在服务中使用startManagingCursor()而不是活动,结果相同

不,抱歉。

  

使用Service.class中实现的其他适当方法是否可行?

没有

  

以其他方式可行吗?

欢迎您编写自己的支持代码,以执行您想要的任何操作。我怀疑你能否实现你所寻求的目标。

  

或者,它完全没有意义吗?

恕我直言,是的。在销毁服务时自动关闭Cursor并不是一个坏主意。但是,deactivate() / requery()的概念在服务中对我来说毫无意义。这也是不可能的部分,因为您没有地方可以放置已停用的Cursor,这将在未来的某些服务中被接收。

答案 1 :(得分:0)

可能,您只需要将其投射到活动

如下所示     ((Activity)context).startManagingCursor(cursor);

这是完整的代码

private void getUserId(Context context) {

     AdapterClass adapterClass = new AdapterClass(this,
     DatabaseDetail.TABLE_USER_REGISTRATION);
     adapterClass.Open();

     Cursor cursor = adapterClass.fetchRecords(new String[]{"USER_OID"},
     null);
     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
     ((Activity) context).startManagingCursor(cursor);
     }
     cursor.moveToFirst();

     adapterClass.close();

}