loader 和 AsyncTask 有什么区别? [关闭]

2024-01-16

我想知道 Android loader 和 AsyncTask 之间的区别, 这是 Loader 上的演示:

package com.android.loaderdemo;

import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.LoaderManager.LoaderCallbacks;
import android.content.AsyncTaskLoader;
import android.content.Context;
import android.content.Loader;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;

import com.android.webprocessor.Http_GetServices;

public class MainActivity extends Activity implements LoaderCallbacks<String> {
    TextView txt_username, txt_userEmail, txt_password, txt_role, txt_secretQuestion, txt_answer, txt_zipcode;

    private static String url = "http://dotstg1.xyz.com/loud/webservcies/GetUserProfile.svc/GetUserProfile/124";
    static String response;
    static String name, email, Pasword, Answer, RoleId, SecretQuestion, Zip;

    static String useResult = null;

    static JSONArray userParams = null;

    private static final int THE_LOADER = 0x01;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e("onCreate", "onCreate");
        // getSuLoaderManager().initLoader(THE_LOADER, null, this).forceLoad();
        getLoaderManager().initLoader(THE_LOADER, null, this).forceLoad();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        Log.e("onCreateOptionsMenu", "onCreateOptionsMenu");
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public Loader<String> onCreateLoader(int arg0, Bundle arg1) {
        Log.e("onCreateLoader", "onCreateLoader");
        SampleLoader loader = new SampleLoader(this);

        return loader;
    }

    @Override
    public void onLoadFinished(Loader<String> arg0, String arg1) {
        txt_username = (TextView) findViewById(R.id.name);
        txt_userEmail = (TextView) findViewById(R.id.email);
        txt_password = (TextView) findViewById(R.id.password);
        txt_role = (TextView) findViewById(R.id.role);
        txt_secretQuestion = (TextView) findViewById(R.id.secretquestion);
        txt_zipcode = (TextView) findViewById(R.id.zipcode);
        txt_answer = (TextView) findViewById(R.id.answer);

        txt_username.setText(name);
        txt_userEmail.setText(email);
        txt_password.setText(Pasword);
        txt_role.setText(RoleId);
        txt_secretQuestion.setText(SecretQuestion);
        txt_answer.setText(Answer);
        txt_zipcode.setText(Zip);
        Log.e("onLoadFinished", "onLoadFinished");
    }

    @Override
    public void onLoaderReset(Loader<String> arg0) {
        Log.e("onLoaderReset", "onLoaderReset");

    }

    private static class SampleLoader extends AsyncTaskLoader<String> {

        @Override
        public Context getContext() {
            Log.e("getContext", "getContext");
            return super.getContext();
        }

        @Override
        public int getId() {
            Log.e("getId", "getId");
            return super.getId();
        }

        public SampleLoader(Context context) {

            super(context);
            Log.e("SampleLoader", "SampleLoader");
        }

        @Override
        public String loadInBackground() {
            Log.e("loadInBackground", "loadInBackground");
            try {
                response = Http_GetServices.connect(url);
                JSONObject jsonObject = new JSONObject(response);
                JSONObject json2 = jsonObject.getJSONObject("GetUserPrfResult");
                String test = (String) json2.get("Descritption");
                JSONObject json3 = json2.getJSONObject("GetUserPrfParams");

                name = (String) json3.get("Name");
                email = (String) json3.get("Email");
                Pasword = (String) json3.get("Pasword");
                RoleId = String.valueOf(json3.getInt("RoleId"));
                SecretQuestion = String.valueOf(json3.get("SecretQuestion"));
                Answer = (String) json3.get("Answer");
                Zip = String.valueOf(json3.get("Zip"));

            }
            catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

    }

}

From here http://www.javacodegeeks.com/2013/01/android-loaders-versus-asynctask.html:

Loaders 的一个子类是 AsyncTaskLoader。本班表演 与 AsyncTask 功能相同,但更好一些。它可以处理 Activity 配置更容易更改,并且它的行为在 片段和活动的生命周期。令人高兴的是 AsyncTaskLoader 可以在 AsyncTask 存在的任何情况下使用 正在使用。任何时候需要将数据加载到内存中 要处理的 Activity/Fragment,AsyncTaskLoader 可以完成这项工作 更好的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

loader 和 AsyncTask 有什么区别? [关闭] 的相关文章

  • 这个方法比 Math.random() 更快吗?

    我是一名初学者 目前已经开始开发一款使用粒子群优化算法的 Android 游戏 我现在正在尝试稍微优化我的代码 并且 for 循环中有相当多的 Math random 几乎一直在运行 所以我正在考虑一种方法来绕过并跳过所有 Math ran
  • 适用于 IOS 和 Android 的支付网关 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个应用程序 用户必须在澳大利亚餐馆通过应用程序 android ios 付款 有两种付款方式 通过 PayPal 或 Visa
  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • Gradle 构建错误:内存不足

    当我使用 gradle 构建时 它失败并显示以下信息 OpenJDK 64 Bit Server VM warning INFO os commit memory 0x0000000788800000 89128960 0 failed e
  • 如何在android中压缩和解压png图像

    您好 在我的应用程序中 当我单击 zip 按钮时 我需要压缩图像文件 当我单击解压缩按钮时 我需要解压缩文件 我尝试使用下面的代码来压缩图像 但我的问题是当我单击 zip 按钮时 正在创建 zip 文件 但之后在使用 winzip 软件的系
  • Android 中的 Sugar ORM:更新 SQLite 中保存的对象

    我是在 Android 上使用 SQLite 和 Sugar ORM 进行应用程序开发的新手 并尝试阅读 Sugar ORM 文档 但没有找到有关如何更新 SQLite 中保存的对象的任何信息 更改对象属性后还可以保存对象吗 就像是 Cus
  • 如何访问android库项目中的资源

    我正在构建一个 android 库项目 它内部需要一些静态资源 图像 xml 等 然后我想知道我可以把这些资源放在哪里以及如何访问它们 既然我把资源放到了assets文件夹 我使用 AssetManager 来访问资源 public cla
  • android中根据屏幕尺寸计算图像尺寸

    我正在尝试根据屏幕尺寸计算图像高度和宽度 我从后端获取 5 x 7 尺寸的图像 为了将像素乘以 72 进行转换 我有 360 X 504 尺寸的图像 对于 360 X 504 我的动态透明矩形区域将显示为 1 223 x 1 179 即 8
  • 使用 Android Studio 进行调试永远停留在“等待调试器”状态

    UPDATE The supposed重复是一个关于陷入 等待调试器 执行时Run 而这个问题就陷入了 等待调试器 执行时Debug 产生问题的步骤不同 解决方案也不同 每当我尝试使用Android Studio的调试功能时 运行状态总是停
  • 如何从android中的外部存储中获取所选文件的文件路径?

    我在选择文件的文件路径时遇到问题 我搜索了整个堆栈溢出 但问题没有解决 从设备中选择文件的代码如下所示 Intent intent new Intent Intent ACTION GET CONTENT intent setType in
  • 适用于 Android 的 Google 云端硬盘\文档 API

    我在几个小时内将 Dropbox 与我的应用程序集成 因为 SDK 描述清晰并且有很好的使用示例 Google Drive 似乎只有一个 一刀切 的 Gdata SDK 它非常重 有很多依赖项 它使我的应用程序的大小增加了三倍 而且不是很直
  • 如何使用应用程序接口将蓝牙套接字传递给另一个活动

    因此 根据我收集的信息 套接字连接既不可序列化 也不可分割 但我需要将蓝牙连接传递给另一个活动 我不想作为中间人编写服务 所以请不要将此作为解决方案发布 我听说有一种方法可以使用自定义应用程序接口来传递这些类型的对象 但我一生都找不到这样的
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • Jetpack 导航:如何从一个嵌套图的子级导航到另一个嵌套图的子级?

    导航结构 MainActivity nav root HomeFragment AuthNestedGraph nav auth BeforeOtpFragment home OtpFragment ProfileNestedGraph n
  • android textview 有字符限制吗?

    我正在尝试在 android TextView 中输入超过 2000 3000 个字符 它不显示任何内容 任何一份指南是否对 android textview 有字符限制或什么 我在G3中做了一些小测试 我发现 如果activtiy布局中有
  • SDK >=26 仍需要 mipmap/ic_launcher.png?

    在 Android 中 有两种指定启动器图标 可以说是应用程序图标 的方法 老 方式 在 mipmap 文件夹中指定不同的 png 文件 通常命名为 ic launcher png 但可以通过以下方式设置名称android icon mip
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • Flash 对象未显示在phonegap android 中

    我已经在 android 手机间隙创建了一个应用程序 我有一个屏幕 我想显示一个静态 flash obj 所以我在屏幕 HTML 页面中放入了以下代码
  • 如何正确编写AttributeSet的XML?

    我想创建一个面板适用于 Android 平台的其他小部件 http code google com p android misc widgets 在运行时 XmlPullParser parser getResources getXml R

随机推荐

  • 分层数据模板中的命令绑定

    我的应用程序中有菜单 我使用分层数据模板将其可视化
  • 使用 onBlur 验证输入类型=文件

    我可以使用 onBlur 来验证 type text 或 textarea 输入 但是我无法让同样的方法适用于 type file 这有效
  • 亚马逊 SimpleDB 与亚马逊 DynamoDB

    我有一些基本的了解亚马逊简单数据库 http aws amazon com simpledb 是 但根据亚马逊动态数据库 http aws amazon com dynamodb 描述似乎几乎相同 aNoSQL 键值存储 http en w
  • Hackage 包“双重转换”中未定义的符号

    我正在尝试建立double conversion来自 Hackage 的包 它构建正常 但 ghci 无法加载它 投诉内容是 Loading package double conversion 0 2 0 0 linking
  • Seaborn KDEPlot - 数据变化不够?

    我有一个包含 900 行的数据框 我正在尝试为某些列绘制 KDE 图 在某些列中 大多数值都是相同的最小值 当我包含太多最小值时 KDEPlot 会突然停止显示最小值 例如 以下包含 600 个值 其中 450 个是最小值 并且绘图看起来不
  • 如何在 python 中的 sklearn 中通过交叉验证执行 SMOTE

    我有一个高度不平衡的数据集 想要执行 SMOTE 来平衡数据集并执行交叉验证来测量准确性 然而 大多数现有教程仅使用单个training and testing迭代来执行 SMOTE 因此 我想知道使用交叉验证执行 SMOTE 的正确过程
  • 使用 team city 部署 ASP.NET 网站

    如何部署一个没有任何项目文件的网站项目 我们正在尝试使用 Team City 来自动化构建和部署 我能够成功构建该项目 但无法部署该网站 MsDeploy 支持通过以下方式部署网站contentPath提供者 msdeploy verb s
  • 从 Android 设备使用 PHP 连接到 MySQL 数据库

    我正在尝试使用 PHP 从 Android 设备连接到 MySQL 我正在关注这个教程 http blog sptechnolab com 2011 02 10 android android connecting to mysql usi
  • 较长的物体长度不是较短物体长度的倍数? [复制]

    这个问题在这里已经有答案了 我不明白为什么 R 会给我一个关于 较长对象长度不是较短对象长度的倍数 的警告 我有这个对象 它是通过对给出工作日中位数的 xts 系列进行聚合而生成的 u lt aggregate d list Ukedag
  • 在android中维护会话(应用程序在服务器端保持身份验证)

    我正在android中构建一个登录应用程序 其中我点击一个url 带有用户名和密码 直到该部分它工作正常 但之后每当我点击一个url 一旦用户通过身份验证 它什么都不返回 即错误消息 例如请先登录 然而 它在非常相似的 iPhone 应用程
  • 用于在原子编辑器中将选择内容转换为大写(或小写)的键盘快捷键

    在 Atom 编辑器中将当前选定的文本转换为大写 或小写 的键盘快捷键是什么 在 Windows 和 Linux 上 Ctrl K then Ctrl U for uppercase Ctrl K then Ctrl L for lower
  • GetSystemService DOWNLOAD_SERVICE 处于非活动状态

    在非活动类中的简单方法中 我使用代码 mgr DownloadManager mContext getSystemService DOWNLOAD SERVICE 在非活动类中 我的构造函数如下所示 public Download23 Co
  • Gradle - 如何从命令行检测 --debug 标志?

    我有一个正在执行命令的任务 我需要更改传递给命令的参数 具体取决于我是否这样做 gradlew debug myTask or gradlew myTask 我认为这就像这样做一样简单 project logger isEnabled Lo
  • UIDatePicker的minimumDate和maximumDate可以包含时间吗?

    需要一个具有特定最大和最小日期的 UIDatePicker和时间 目前 NSDatePicker minimumDate 和 maximumDate 似乎只考虑日期 处理这个问题的正确方法是什么 NSDates 包含日期和时间 来自文档 N
  • 为Android编译imagemagick

    我正在尝试编译这个项目https github com lilac Android ImageMagick https github com lilac Android ImageMagick 要生成 android magick so 我
  • 单色黑白位图

    我正在 Android 上工作 将从相机捕获的彩色位图转换为黑白单色图像 没有灰色 我有几种灰度转换方法 但我无法将图像转换为黑白格式 有没有什么方法可以将位图转换成这种格式 一种可靠的方法是平均阈值位图 该方法描述于这张纸 http ww
  • 迭代 HashSet 最快/最安全的方法是什么?

    我对 C 还很陌生 但通过论坛帖子注意到使用HashSet代替List在特定情况下 我当前的情况并不是将大量数据存储在单个List完全正确 但我不必经常检查它的成员 问题是我确实也需要迭代它 但它们存储或检索的顺序实际上并不重要 我已经读到
  • 以编程方式更改 Windows 中的打印机首选项

    我编写了一个为新用户安装多台打印机的脚本 我想更改其中一些设置 以便它们可以在页面的双面打印 我相信这涉及使用 printui 修改属性 但是它可能需要 VB 脚本或可能需要另一种 NET 语言 我会使用 VB C 或 IronPython
  • Axis2 会话管理

    我正在axis2中构建一个小型web服务 自下而上 我编写java类并让eclipse wtp生成服务 我想使用会话 以便用户可以使用用户名登录并通过 如果数据库中存在该用户名 而不是在会话上下文中使用 Web 服务 坦白说 我不知道从哪里
  • loader 和 AsyncTask 有什么区别? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想知道 Android loader 和 AsyncTask 之间的区别 这是 Loader 上的演示 package com android