微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Android中通过Loaders插入记录

这个问题将是从问的Content Resolver vs Cursor Loader开始的后续工作
答案明确指出了如何使用Content Resolver将记录插入sqlite Db中.我的问题如下:

>我可以使用装载机(普通装载机)来实现此功能吗?

例如:

    public Loader<Cursor> onCreateLoader(int id, Bundle bundle) {
            switch (id) {

    case AppConstants.LOADER_ADD_FAV_PHONE_NUM:

        ContentValues values = new ContentValues();
        values.put(DBHelper.TM_DB_COLUMN_PHONE_NUMBER,
                directionorder);
        values.put(TransitMeDBHelper.TM_DB_COLUMN_NAME_ID, selectionArgs[0]);
        Uri insertFavStop =getContentResolver().insert(TransitMeContentProvider.CONTENT_URI_INSERT_FAV_PHONE,
                        values);
        break;
    }

return null;
}

这会在Main UI线程或worker Thread中运行功能吗?我知道我不会为此收到回调,因为内容解析器将返回URI而不是包含数据的游标.

我试过运行此代码,但是它的行为有点奇怪..记录了重复的插入,并且插入的内容不一致,有人可以向我展示一些使用Loader进行插入操作的正确资源(我已经看到了很多带有查询示例的示例,并且可以正常工作像一个魅力:))

感谢您的时间 .

解决方法:

Can i use a loader(normal Loader) to implement this functionality ?

您不能使用认的CursorLoader插入数据.如果您实现自己的Loader,则可能可以使用loadInBackground方法进行插入,但这会使您的代码充其量不便(而且我不知道它是否会真正起作用).

Would this run the functionality in the Main UI thread or a worker
Thread . I understand that i would not receive callbacks for this as
the content resolver will return a URI instead of the cursor
containing data .

加载程序回调将在实现它们的线程上运行(最有可能是UI主线程),因此您在主UI线程上执行getContentResolver().insert()可能会阻塞主UI线程.

I tried running this code but it behaves kind of wierd .. Duplicate
inserts are recorded and its not consistient ,

您是否测试过onCreateLoader方法调用了多少次?

Could someone show me to some right resource which uses a Loader to do
Insert operations ( I have seen many examples with query examples and
it works like a charm

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐