标签: android-cursorloader

Android浏览历史记录仅遗漏了一些网站

使用下面的功能,我试图获取用户在其Android手机上从Chrome浏览器访问的最新网址.此功能适用于大多数站点,但不适用于"www.reddit.com".

url如果我访问"www.google.com","www.hulu.com"或"www.kayak.com",则下面的变量会更新,但如果我访问"www.reddit.com"则不会更新.

如果我去"m.reddit.com" 它更新.与facebook相同的问题,检测m.facebook.com但不是www.facebook.com.

我不明白Android记录一个但不记录另一个的"www.reddit.com"和"m.reddit.com"之间有什么区别.

我需要在代码中进行哪些更改才能检测到所有URL访问?

public String returnLastChromeURL(int browserCode) {
    String[] proj = new String[] { Browser.BookmarkColumns.DATE,
            Browser.BookmarkColumns.TITLE, Browser.BookmarkColumns.URL };

    String dateTime;
    Uri uriCustom = Uri
            .parse("content://com.android.chrome.browser/bookmarks");
    String sel = Browser.BookmarkColumns.BOOKMARK + " = 0"; // 0 = history,
                                                            // 1 = bookmark
    try {
    Cursor mCur = mContext.getContentResolver().query(uriCustom, proj, sel,
            null, BookmarkColumns.DATE + " ASC");
    mCur.moveToFirst();
    mCur.moveToLast();

        dateTime = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.DATE));
        title = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.TITLE));
        url = mCur.getString(mCur
                .getColumnIndex(Browser.BookmarkColumns.URL)); …
Run Code Online (Sandbox Code Playgroud)

android bookmarks google-chrome browser-history android-cursorloader

24
推荐指数
1
解决办法
878
查看次数

ExpandableListView的SimpleCursorTreeAdapter和CursorLoader

我试图通过使用异步查询提供CursorLoaderSimpleCursorTreeAdapter

这是我Fragment实现的类CursorLoader

public class GroupsListFragment extends ExpandableListFragment implements
  LoaderManager.LoaderCallbacks<Cursor> {

  private final String DEBUG_TAG = getClass().getSimpleName().toString();      

  private static final String[] CONTACTS_PROJECTION = new String[] {
    ContactsContract.Contacts._ID,
    ContactsContract.Contacts.DISPLAY_NAME };  

  private static final String[] GROUPS_SUMMARY_PROJECTION = new String[] {
    ContactsContract.Groups.TITLE, ContactsContract.Groups._ID,
    ContactsContract.Groups.SUMMARY_COUNT,
    ContactsContract.Groups.ACCOUNT_NAME,
    ContactsContract.Groups.ACCOUNT_TYPE,
    ContactsContract.Groups.DATA_SET };

  GroupsAdapter mAdapter;

  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    populateContactList();

    getLoaderManager().initLoader(-1, null, this);
  } 

  public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    // This is called when a new Loader needs …
Run Code Online (Sandbox Code Playgroud)

android expandablelistadapter simplecursoradapter android-cursorloader

22
推荐指数
1
解决办法
2万
查看次数

带有LoaderManager的CursorLoader如何知道将光标发送到CursorAdapter?

我正在浏览一些代码,我意识到我实际上并不知道如何使用连接CursorLoaderLoaderManager组合CursorAdapter.这是我困惑的部分.

agendaAdapter = new MyAgendaAdapter(this, null);

makeProviderBundle(new String[] {"_id", "event_name", "start_date", "start_time",
    "end_date", "end_time", "location"}, "date(?) >= start_date and date(?) <= end_date", 
new String[]{getChosenDate(), getChosenDate()}, null);

getLoaderManager().initLoader(0, myBundle, MainDisplayActivity.this);
list.setAdapter(agendaAdapter);
Run Code Online (Sandbox Code Playgroud)

那么query()我的自定义方法如何ContentProvider将其发送到特定的方法CursorAdapter呢?我只是没有看到连接.我理解其他一切,但这个问题是什么.哦,我应该提一下,代码工作正常.

android android-contentprovider android-loadermanager android-cursorloader

22
推荐指数
1
解决办法
2万
查看次数

如何(正确)从startManagingCursor转换到CursorLoader?

我将我的android更新SDK到最新版本,现在它说startManagingCursor()deprecated.我需要帮助来更新我的代码以使用新代码 CursorLoader.

private void fillData() {
    Cursor notesCursor = mDbHelper.fetchAllNotes();
    startManagingCursor(notesCursor);
    NoteAdapter notes = new NoteAdapter(this,  R.layout.notes_row, notesCursor);
    setListAdapter(notes);
}
Run Code Online (Sandbox Code Playgroud)

那么,startManagingCursor()旧的,如果它被翻译,新代码会是什么样子?

android cursor android-cursorloader

19
推荐指数
1
解决办法
1万
查看次数

限制CursorLoader中的查询

我试图通过CursorLoader从sqlite db查询数据.当我浏览android开发者网站的文档时,我找不到限制查询.

CursorLoader(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

如何在CursorLoader中实现限制?

提前致谢

android android-cursorloader

19
推荐指数
1
解决办法
6471
查看次数

为什么我不应该使用消息总线而不是加载器和服务?

在典型的Android项目中,我们需要以干净的方式将数据从某个地方(REST,SQL,缓存等)提取到UI中,我们通常使用Loader,Service或(可能是yuk)AsyncTask,但我发现所有这些方法由于以下几个原因不满意:

  • 它们很难看,尤其是具有令人震惊的API结构的Loaders
  • 它很容易被包裹在线程中,并踩在UI线程上
  • 我们的表示层代码被Android代码和样板文件污染了.我们经常将Android对象(例如Cursors)传递到UI层,这使得一个干净的架构几乎无法实现.这迫使我们将业务领域特定代码(理想情况下是普通的Java对象)与Android平台代码混合在一起 - 对于未来开发的可读性,维护,测试或灵活性来说并不是很好.在实践中,我们经常会遇到庞大,混乱的Activity/Fragment类.

我被这些文章中概述的想法所吸引:http : //fernandocejas.com/2014/09/03/architecting-android-the-clean-way/ http://antonioleiva.com/mvp-android/ http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html

成功开始使用MVP将活动/碎片/视图分解为更小/更清洁的部分,我现在认为上述问题的解决方案可能是依赖于消息总线(Otto,EventBus等)而不是服务或加载器或任何与域数据交互的内容.

所以在实践中这意味着不是使用(例如)CursorLoader从数据库加载Cursor,而是使用消息总线发送消息来请求数据,数据被加载到后台线程以响应该消息,然后通过UI线程上的消息到达时处理响应数据.对我来说至关重要的是,我希望将数据结构从业务领域推出,而不是Android域,所以我更喜欢业务对象数组,而不是Cursor.

这是工程设计,总是需要权衡,虽然这似乎提供了更清晰的关注点分离,但是装载机/服务模板的减少,缺点是什么?

  • 理解代码可能更难(特别是对于新开发人员而言)
  • 有必要确保在正确的线程上发送和接收消息(Otto似乎在这里可能有限制)
  • 有必要避免将一切事物作为一种信息实施的诱惑,这最终会适得其反
  • 传递业务对象集合可能不如使用像Cursors这样的对象.虽然在许多情况下它在实践中是一个问题吗?
  • 我不知道Otto/EventBus是否只是为了传递非常小的消息,或者是否适合传递更大的对象(例如业务对象数组).

我的问题是,是否有任何基本原因不采用这种基于消息的Android应用程序方法?

android android-service android-cursor android-testing android-cursorloader

19
推荐指数
1
解决办法
1782
查看次数

CursorLoader和AsyncTaskLoader之间的区别

我为什么要使用AsyncTaskLoader,何时应该更喜欢CursorLoader,反之亦然?

在官方页面中,显示了App-listing示例,它使用AsyncTaskLoader而不是CursorLoader.

这两者有哪些优缺点?我在某处读到了CursorLoader没有关注内容更改(在sqlite中).

谢谢!

android android-asynctask android-cursorloader android-sqlite

18
推荐指数
1
解决办法
5669
查看次数

startManagingCursor的目的是什么?

好的,文档声明它允许Activity管理游标的生命周期.但是我没有真正看到它的重点,因为当活动被销毁时,对新创建的游标的任何引用也应该被删除,然后光标本身在下一个垃圾收集周期中就会消失.那为什么要这么麻烦?

sqlite android cursor android-loadermanager android-cursorloader

17
推荐指数
1
解决办法
2万
查看次数

如何指定查询到内容提供程序的排序顺序

我正在尝试从Android中的Sqlite表加载所有项目,并希望订购结果.

如何指定返回光标的顺序?

我通过以下方式通过CursorLoader查询ContentProvider:

new CursorLoader(context, RepresentativeEntityContentProvider.CONTENT_URI, null, null,
            null, null);
Run Code Online (Sandbox Code Playgroud)

android android-contentprovider android-cursorloader android-sqlite

16
推荐指数
2
解决办法
1万
查看次数

使用CursorLoader查询SQLite DB并填充AutoCompleteTextView

我有一个我想查询的SQLite数据库.我想通过ICS定位Android 2.2.我遇到了关于如何执行此操作的文章,但它使用了弃用的代码(不是异步查询,而是在UI线程上).我已经阅读过,我可以使用CursorLoaderLoaderManager来执行此任务的首选,最佳实践方式(以免陷入UI线程).

问题是找到一个简洁的例子向我解释如何做到这一点.1)加载数据库,2)查询它,3)使用结果填充AutoCompletetextBox列表视图.

这样的例子存在吗?

sqlite android android-loadermanager android-cursorloader

15
推荐指数
1
解决办法
5840
查看次数