标签: android-loadermanager

AsyncTaskLoader与AsyncTask

既然Honeycombv4 Compatibility Library可以使用AsyncTaskLoader.据我所知,它AsyncTaskLoader可以通过配置更改生存,如屏幕翻转.

是否建议使用AsyncTaskLoader而不是AsyncTask?是否LoaderManager也参与其中?

但我没有找到任何关于如何正确使用的好例子AsyncTaskLoader.文档也没有提供任何示例.谁能提供一些很好的例子.

android android-asynctask android-loadermanager

128
推荐指数
4
解决办法
5万
查看次数

`LoaderManager`中`initLoader`和`restartLoader`的区别

关于initLoader以下restartLoader功能之间的差异,我完全迷失了LoaderManager:

  • 它们都有相同的签名.
  • restartLoader 还会创建一个加载器(如果它不存在)("在此管理器中启动新的或重新启动现有的加载器").

两种方法之间是否存在某种关系?打电话restartLoader总是打电话initLoader吗?我可以打电话restartLoader而不必打电话initLoader吗?是否保存以调用initLoader两次刷新数据?我什么时候应该使用其中一个而且(重要的!)为什么?

java android android-loadermanager

127
推荐指数
4
解决办法
3万
查看次数

带有多个加载器的LoaderManager:如何获得正确的游标加载器

对我来说,如果您有多个装载机,如何获得正确的光标并不清楚.让我们说你定义了两个不同的Loader:

getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(1,null,this);
Run Code Online (Sandbox Code Playgroud)

然后在onCreateLoader()中你根据id做不同的事情:

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {

    if (id==0){
               CursorLoader loader = new CursorLoader(getActivity(),
            MaterialContentProvider.CONTENT_URI,null,null,null,null);
    }else{
               CursorLoader loader = new CursorLoader(getActivity(),
            CustomerContentProvider.CONTENT_URI,null,null,null,null);
            };
    return loader;
} 
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是如何在onLoadFinished()中获得正确的光标,因为你没有得到任何id来识别正确的Cursoradapter光标.

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {


    mycursoradapter1.swapCursor(cursor);
    if(isResumed()){
        setListShown(true);
    }else {
        setListShownNoAnimation(true);
    }



}
//and where to get the cursor for mycursoradapter2
Run Code Online (Sandbox Code Playgroud)

或者我错了,这是在一个片段中获得两个不同cursoradapter的结果的错误方法.

android android-loadermanager android-loader

116
推荐指数
3
解决办法
3万
查看次数

没有ContentProvider的CursorLoader用法

Android SDK文档说该startManagingCursor()方法已被删除:

不推荐使用此方法.改为使用新的CursorLoader类和LoaderManager; 这也可以通过Android兼容包在旧版平台上使用.此方法允许活动根据活动的生命周期为您管理给定的Cursor生命周期.也就是说,当活动停止时,它将自动调用给定Cursor上的deactivate(),稍后重新启动它将为您调用requery().当活动被销毁时,所有托管游标将自动关闭.如果您的目标是HONEYCOMB或更高版本,请考虑改为使用LoaderManager,可通过getLoaderManager()获取

所以我想用CursorLoader.但是当我在构造函数中需要URI时,如何使用自定义CursorAdapter和不使用它?ContentProviderCursorLoader

android cursor android-contentprovider android-loadermanager android-cursorloader

107
推荐指数
4
解决办法
5万
查看次数

为SQLiteDatabase使用Singleton设计模式

我是Android上的新手,我正在开发一个简单的应用程序来获得一些基本的体验.我的应用程序非常简单,包括广播接收器和一些活动.这两个组件都使用单个数据库,因此从理论上讲,两者都可能同时尝试访问数据库.

目前我只是在每次需要时实例化db对象(它是一个SQLite数据库帮助程序类),并执行所需的操作:查询,插入等.

从我在这里和其他一些文档中读到的,这有一个问题是在同时访问db的情况下获得"db locked"异常,所以更好的方法是拥有这个db对象的单个实例所以所有组件始终使用相同的数据库连接.

以上推理是否正确?那么一个单身人士会成为一个足够好的解决方案吗?我知道一些纯粹主义者可能反对它,但请注意,这是一个相当简单的应用程序,所以我可以负担得起在其他情况下我不会做的事情.

否则,更好的选择是什么?我已经阅读过有关使用内容提供商的内容,但这对此来说太过分了,除此之外我对与其他活动共享数据不感兴趣.我确实读过这篇文章,发现它很有帮助.

java sqlite singleton android android-loadermanager

71
推荐指数
2
解决办法
4万
查看次数

getLoaderManager().initLoader()不接受'this'作为参数,尽管类(ListFragment)实现了LoaderManager.LoaderCallbacks <Cursor>

我在遵循Android中使用SQLite 的指南时遇到了麻烦.我正在使用a ListFragment而不是ListActivity(如示例中所示),所以我使用了ListFragment工具LoaderManager.LoaderCallbacks<Cursor>.然后,在以下fillData()方法中ListFragment:

private void fillData() {
    // Fields from the database (projection)
    // Must include the _id column for the adapter to work
    String[] from = new String[] { NotesSQLiteHelper.COLUMN_TITLE };
    // Fields on the UI to which we map
    int[] to = new int[] { R.id.label };

    getLoaderManager().initLoader(0, null, this); //error
    adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.notes_row, null, from, to, 0);
    setListAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)

我收到错误:

The method …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-listfragment android-loadermanager

64
推荐指数
3
解决办法
5万
查看次数

android - 没有Content Provider的CursorLoader和SQLite

我知道这已经讨论过但我想问一下目前的情况.我是否必须创建一个ContentProvider以将CursorLoader与sqlite数据库结合使用?

我发现

没有ContentProvider的CursorLoader用法

正如Emmby评论的那样,看起来正是我所希望的

  • 用户应该意识到一个限制,即它没有机制来刷新数据更改(因为Loaders应该这样做)

因此提到了另一种解决方案

https://github.com/commonsguy/cwac-loaderex

还指出了一些缺点

  • 但是,要使用自动重新查询,您需要为UI和更新使用相同的加载程序,从而限制其对后台服务的可用性.

当然,在使用LoaderManager时,我们希望获得它所引入的所有好处.所以我的问题是,如果有一种方法可以使用LoaderManager连接sqlite数据库,而无需实现内容提供程序,但具有它的所有好处.

谢谢

sqlite android android-contentprovider android-loadermanager

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

数据更改后CursorLoader没有更新

我创建了一个小应用程序,试图理解LoaderManagerCursorLoader-classes 的功能.

我已经实现了LoaderCallbacks<Cursor>我的FragmentActivity-class,一切工作正常,但事实上,当我通过我的更新数据ContentResolver.update()ContentResolver.insert()-方法,onLoadFinished()不叫,结果我的数据不会更新.

我有一个自定义ContentProvider,我想知道问题是在我的ContentProvider中没有通知数据已更改或其他内容.

android android-contentprovider android-loadermanager android-cursorloader

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

你可以使用服务中的LoaderManager吗?

我有一个使用自定义Loader和Cursor设置的数据加载系统,它在Activities和Fragments中工作得很好但是在Service中没有LoaderManager(我可以找到).有谁知道为什么LoaderManager被排除在服务之外?如果没有办法解决这个问题?

android android-service android-fragments android-loadermanager

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

是否可以让Android应用程序中的所有活动共享一个SQLiteOpenHelper实例?

将单个SQLiteOpenHelper实例作为子类应用程序的成员,并且所有需要SQLiteDatabase实例的活动从一个帮助程序获取它是否可以?

java sqlite android android-cursor android-loadermanager

39
推荐指数
4
解决办法
2万
查看次数