相关疑难解决方法(0)

在Android中使用Asynctask的加载器有什么优势?

加载器优于异步任务有什么优势吗?此外,如何使用Android froyo兼容手机的加载器.

编辑:

这里的主要问题是我没有使用本机DB(SqlLite).在开发服务器上使用DB.显然,我不能再使用CursorLoader了.AsyncTaskLoader没有任何例子.如果有,请做链接.

将所需数据加载到本地数据库然后使用它进行查询是否更好CursorLoader

android android-asynctask android-cursorloader android-loader

11
推荐指数
1
解决办法
6074
查看次数

从AsyncTaskLoader更新UI

我已将我转换AsyncTaskAsyncTaskLoader(主要用于处理配置更改).我有TextView我使用的进展状况,并使用onProgressUpdateAsyncTask更新它.它看起来不像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.

android android-ui android-asynctask asynctaskloader

5
推荐指数
1
解决办法
5867
查看次数

使用AutoCompleteTextView和CursorAdapter时,更改设备方向会导致活动崩溃

情况

我有一个带有AutoCompleteTextView的Activity.在您键入时,AutoCompleteTextView会从您的联系人中查找匹配的名称,并将其显示在列表中.如果在显示此列表时更改了设备方向,则活动崩溃(源代码后提供的错误消息).

笔记

我正在为ICS 4.0.3开发并在Nexus S设备上进行测试.我试图遵循使用LoaderManager生成和管理游标的最佳实践.我的理解是LoaderManager应该在方向更改中保留游标数据(http://developer.android.com/guide/topics/fundamentals/loaders.html#callback),但似乎并非如此.

因为当过滤约束太小而无法使用时,CursorAdapter要我返回原始的未过滤游标,我是:

  1. 将光标保存为活动的静态变量,以便在不符合过滤条件时使用(对不当的术语表示抱歉.我是Java新手).
  2. 防止CursorAdapter在替换游标后关闭游标,除非通过将游标与保存的游标进行比较来确认它不是原始游标.

问题似乎是在方向更改后调用onLoadFinished LoaderManager回调,但是在重新定向期间,它传递的光标(原始光标?)被关闭.

如果我通过将以下内容添加到activity清单中的声明来配置我的Activity以管理方向更改:

机器人:configChanges = "方向|屏幕尺寸"

保存的原始光标应该在方向更改中保留(对吗?).虽然应用程序没有崩溃,但还会出现另一个相关问题:

  • 如果我键入几个字母,更改设备方向,然后开始删除字母,一旦我得到1或0个字母,LogCat会给我一个警告,我正在尝试访问光标关闭后.

在这种情况下,我的原始光标似乎也消失了.我猜测应用程序没有崩溃,因为我的活动配置为管理方向更改本身时未调用onLoadFinished回调

我的问题

  1. 我正确地假设我的光标在设备方向改变时被破坏了吗?
  2. 如何在设备方向改变时保留光标和/或其数据?

源代码

查看 - 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)

java android

3
推荐指数
1
解决办法
2720
查看次数

在手机应用程序(Froyo)上使用Android CursorLoaders和其他Honeycomb功能

我一直在使用Froyo(我的手机版)开发手机应用程序.我想转而在项目中加入Honeycomb.

我已将Android兼容包导入到我的项目中.我当前的应用程序从SQLite数据库中读取.从所述数据库加载图库和各种GridView和ListView.我不知道接下来该做什么.我是否将活动切换到FragmentActivities?如何从我当前的游标转到CursorLoaders?这对我加载图库和网格/列表视图的自定义适配器有何影响?等等...

我很感激你能给予的任何帮助和建议.我很难掌握如何转换我拥有的东西并允许两者共存.我真的想以"正确的方式"做到这一点.

编辑:我意识到这是一个相当广泛的"问题".所以,让我们专注于Cursor to CursorLoader的事情.我会为其他项目创建新问题.

android cursor android-3.0-honeycomb

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