加载器优于异步任务有什么优势吗?此外,如何使用Android froyo兼容手机的加载器.
编辑:
这里的主要问题是我没有使用本机DB(SqlLite).在开发服务器上使用DB.显然,我不能再使用CursorLoader了.AsyncTaskLoader没有任何例子.如果有,请做链接.
将所需数据加载到本地数据库然后使用它进行查询是否更好CursorLoader?
android android-asynctask android-cursorloader android-loader
我已将我转换AsyncTask为AsyncTaskLoader(主要用于处理配置更改).我有TextView我使用的进展状况,并使用onProgressUpdate在AsyncTask更新它.它看起来不像AsyncTaskLoader是等价的,所以在loadInBackground(AsyncTaskLoader我)使用它时:
getActivity().runOnUiThread(new Runnable() {
public void run() {
((TextView)getActivity().findViewById(R.id.status)).setText("Updating...");
}
});
Run Code Online (Sandbox Code Playgroud)
我正在使用它Fragment,这就是我使用的原因getActivity().这项工作非常顺利,除非发生配置更改,例如更改屏幕方向.我AsyncTaskLoader一直在跑(这就是为什么我正在使用AsyncTaskLoader),但runOnUiThread似乎被跳过了.
不知道为什么会被跳过,或者这是从更新UI的最佳方式 AsyncTaskLoader.
更新:
我最终恢复了一个,AsyncTask因为它似乎更适合UI更新.希望他们能将合并的东西合并到AsyncTask一起AsyncTaskLoader.
我有一个带有AutoCompleteTextView的Activity.在您键入时,AutoCompleteTextView会从您的联系人中查找匹配的名称,并将其显示在列表中.如果在显示此列表时更改了设备方向,则活动崩溃(源代码后提供的错误消息).
我正在为ICS 4.0.3开发并在Nexus S设备上进行测试.我试图遵循使用LoaderManager生成和管理游标的最佳实践.我的理解是LoaderManager应该在方向更改中保留游标数据(http://developer.android.com/guide/topics/fundamentals/loaders.html#callback),但似乎并非如此.
因为当过滤约束太小而无法使用时,CursorAdapter要我返回原始的未过滤游标,我是:
问题似乎是在方向更改后调用onLoadFinished LoaderManager回调,但是在重新定向期间,它传递的光标(原始光标?)被关闭.
如果我通过将以下内容添加到activity清单中的声明来配置我的Activity以管理方向更改:
机器人:configChanges = "方向|屏幕尺寸"
保存的原始光标应该在方向更改中保留(对吗?).虽然应用程序没有崩溃,但还会出现另一个相关问题:
在这种情况下,我的原始光标似乎也消失了.我猜测应用程序没有崩溃,因为我的活动配置为管理方向更改本身时未调用onLoadFinished回调
查看 - home.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<AutoCompleteTextView
android:id="@+id/newPlayer_edit"
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:hint="Contact"
android:singleLine="true" >
<requestFocus />
</AutoCompleteTextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
活动 - Home.java
public class Home extends Activity implements LoaderManager.LoaderCallbacks<Cursor> {
// Constants
private static final String TAG = "HOME";
private static final boolean DEBUG = true;
public static …Run Code Online (Sandbox Code Playgroud) 我一直在使用Froyo(我的手机版)开发手机应用程序.我想转而在项目中加入Honeycomb.
我已将Android兼容包导入到我的项目中.我当前的应用程序从SQLite数据库中读取.从所述数据库加载图库和各种GridView和ListView.我不知道接下来该做什么.我是否将活动切换到FragmentActivities?如何从我当前的游标转到CursorLoaders?这对我加载图库和网格/列表视图的自定义适配器有何影响?等等...
我很感激你能给予的任何帮助和建议.我很难掌握如何转换我拥有的东西并允许两者共存.我真的想以"正确的方式"做到这一点.
编辑:我意识到这是一个相当广泛的"问题".所以,让我们专注于Cursor to CursorLoader的事情.我会为其他项目创建新问题.