如何管理需要AsyncTask调用的不同任务

2024-03-15

我有一个外部库可以使用,它通过互联网与服务器进行通信。每当我需要从互联网获取一些信息时,Android 都会强制我使用异步任务。到目前为止没有问题。但是,我收到越来越多的任务来从互联网检索(以不同方式)数据,并且我不喜欢为每个调用增加不同的类。 长话短说:我有不同的互联网调用,而不是为每个调用创建一个异步任务类,我更喜欢一个类来管理所有不同的调用。这有可能吗?更重要的是,正确的方法是什么?


我也面临着像你一样的类似问题。但我通过反射技术解决了这个问题。我制定了一种方法来防止增加不同类来调用单次命中。 我创建了单个 asynctask 类并传递了 functionName 和活动上下文,并通过 onPostExecute 返回了响应。

这是样本 -

AsyncTaskConnection.java

public class AsyncTaskConnection extends AsyncTask<String, String, Object>{
    JSONObject mainObject;
    Context mContext;
    String returnFunctionName;

    public AsyncTaskConnection (Context context){
         mContext = context;
    }

    protected void onPreExecute() {
        // preExecute
    }

    @Override
    protected Object doInBackground(String... arguments) {
        String apiFunctionName = arguments[0]; // get api FunctionName 
        String jsonString = arguments[1]; // get data
        returnFunctionName = apiFunctionName+"Response"; // return function name
        // some connection code...


        //then call...
            try {
                ht.call(NAMESPACE, requestEnvelop);
            } catch (IOException ex) {
                Log.d(mContext.getClass().getName(), "Io exception bufferedIOStream closed" + ex);
                ex.printStackTrace();
            }
            return mainObject.toString();
        } catch (Exception e) {
            Log.d("Exception", e.toString());
            return "no";
        }
    }

    // main thing is there, i have use the reflaction here....

    @Override
    protected void onPostExecute(Object backresult) {
        Method m;
        try {

            m = mContext.getClass().getDeclaredMethod(returnFunctionName, String.class);
            m.invoke(mContext, (String) backresult);
        } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
    }

在调用者类中

//call this class where you want and get dynamic response 
new AsyncTaskConnection(this).execute("getHomepage",jo.toString());

// and make response fuction

protected void getHomepageResponse(String backresult) {
            try {
// this is your response
                mainObject = new JSONObject(backresult);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

有很多方法可以获得您想要的结果。

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

如何管理需要AsyncTask调用的不同任务 的相关文章

  • Java生成范围内不重复的随机数

    我想生成 1 到 4 范围内的随机数 包括 4 这是我的代码 int num r nextInt 4 1 r is instance of Random 但是 我在循环中运行上述代码 并且不想重复随机数 现在发生的事情我经常得到 1 1 1
  • Android WebView setCertificate 问题 SSL 问题

    我看过很多关于 SSL 错误的帖子和信息 并且我自己也偶然发现了一个 我尝试使用 GlobalSign CA BE 证书通过 Android WebView 访问网页 但收到不受信任的错误 对于大多数手机来说 处理这个问题效果很好 只需告诉
  • 从多个地方绘制 JPanel

    我目前正在为学校开发一款 Java 2D 游戏 我们必须使用抽象工厂设计模式 对于 2D 实现 我使用工厂如下 public class Java2DFact extends AbstractFactory public Display d
  • 抽象方法实现与抽象方法重写。这两个对于抽象类意味着相同吗?

    我几乎要采取Java SE 8 程序员我 exam 1Z0 808 我正在使用这个学习指南 https www selikoff net java oca 8 programmer i study guide https www selik
  • 返回 RxJava 的 Completable 的方法的命名约定

    我有一个带有视图类的 Android 应用程序 Fragment Activity 观察其ViewModel The ViewModel公开方法 例如getUserName返回Observable
  • Java 中内存高效的稀疏数组

    关于时间高效的稀疏数组存在一些问题 但我正在寻找内存效率 我需要相当于List
  • 在类路径中使用通配符调用 java 失败

    我当前目录中有一些 jar 它们都需要位于类路径中 因此我想对类路径使用通配符约定 命令行是 java exe classpath org python util jython args 但是我收到这个错误 Exception in thr
  • 使用枚举变量切换字符串

    我有一个具有不同值的枚举 并且想要切换字符串变量 现在 我在尝试将枚举值转换为字符串 可以用作大小写常量 时遇到了困难 我最好的尝试是将枚举转换为字符串数组 但开关似乎不接受数组值作为大小写常量 IntelliJ 说 需要恒定的表达 Enu
  • Java文本输出中的UTF-8编码问题

    我一直致力于测试高棉语 Unicode Wordbreaker 的各种解决方案 高棉语单词之间没有空格 这使得拼写检查和语法检查变得困难 以及从旧高棉语转换为高棉语 Unicode 我得到了一些源代码 现在在线 http www white
  • 使用 java 中的准备好的语句插入自定义 SQL 类型

    我有一些自定义类型 它们基本上都是枚举 以下是它们的外观示例 CREATE TYPE card suit AS ENUM spades clubs hearts diamonds 我在 Java 中有一些准备好的语句 看起来像这样 Setu
  • 如何在不打开浏览器的情况下查看 Android 应用程序中的网页?

    嘿 我正在开发一个 Android 应用程序 我想连接到该应用程序内的网络 不过 我在某种程度上尝试过 WebView 但它在我的目录中显示的文件很好 但当连接到 google com 时 它显示错误 然后我添加了这个文件
  • 如何告诉 Eclipse 忽略 Ant build.xml 中的错误?

    我有一个使用 Maven 构建的 Eclipse 项目 并且我在 Eclipse 中使用 m2eclipse 插件来获得 Maven 支持 然而这个项目还包含一个build xml它并不用于实际构建项目 而只是用于编写脚本功能 作为项目开发
  • JS 中的 .Jar 文件

    有谁知道如何在 JS 中访问 jar 文件 我已经用 Java 创建了类并作为 jar 文件导入 我想从 JS 文件访问该类 大家好 我感谢你们所有人 我尝试在 Firefox XUL 中使用 JS 列出文件夹中的文件 但我做不到 然后我决
  • 在大画布上滚动

    我需要一些帮助来了解滚动绘制到 Android 画布上的项目的基础知识 假设我想创建一个时间线 其中 0 处的时间是可视化的顶部 并且随着时间的增加 时间线继续呈现在上一个点下方 如果我想在 Android 上渲染它 我知道我可以通过重写
  • Android中计算两个时间之间的差异

    我有两个字符串变量 例如 StartTime 和 EndTime 我需要通过用 StartTime 减去 EndTime 来计算 TotalTime StartTime和EndTime的格式如下 StartTime 08 00 AM End
  • 从 Brixton.RC1 开始的 ZuulProxy 未传递授权标头

    从 Spring Cloud 切换时Brixton M5 to Brixton RC1我的 ZuulProxy 不再通过Authorization标头下游到我的代理服务 我的设置中有各种各样的角色 但大多数都相当简单 Authorizati
  • 无法放置双重 SharedPreferences

    出现错误 这种类型的共享首选项编辑器的 put double 方法未定义 Eclipse 提供了一种快速修复方法 将强制类型转换添加到编辑器 但是当我这样做时 它仍然给出错误 为什么我不能 put double 代码 Override pr
  • 如何找到 JAR:/home/hadoop/contrib/streaming/hadoop-streaming.jar

    我正在练习有关 Amazon EMR 的复数视角视频教程 我被困住了 因为我收到此错误而无法继续 Not a valid JAR home hadoop contrib streaming hadoop streaming jar 请注意
  • 在Java中将32bpp图像转换为16bpp图像

    如何使用 Java 库将 32bpp 图像 ARGB 转换为 16bpp 图像 ARGB 出于我的好奇 在像素级别 这种转换有什么作用 如果我有一个保存像素值 包含所有通道 的 int 值 那么在转换发生后该 int 会有什么不同 32 位
  • 如何在Java中添加两个“卡”的值?

    我正在开发一个项目来模拟二十一点游戏中的第一笔交易 到目前为止 程序创建了两张随机等级 ACE 到 KING 和随机花色的牌 我正在努力创建一个切换表或 if else 梯形图 将两张卡的附加值分配为可变分数 下面的代码从概念上代表了我想要

随机推荐

  • defaultCalendarForNewEvents 失败

    当我尝试调用 newEventStore defaultCalendarForNewEvents 时 它返回一条错误消息 707 907 defaultCalendarForNewEvents failed Error Domain EKC
  • 实现具有多重继承的纯虚函数

    假设有这样一个接口 class A public virtual foo 0 还有一个班B它实现了这个接口 class B public A public virtual foo Foo implemented by B 终于有一节课了C有
  • 根据选定的<选项>动态更新表单操作

    所以 这就是我想要做的 我想要一个 HTML 格式的下拉列表 其中包含一个根据下拉列表的值而变化的提交按钮 所以 当我有这个时
  • MediaWiki 类别不会自动更新

    我有一个MediaWiki在 Linux 服务器上运行的实例似乎不会在提交页面编辑时自动更新其类别 我从未在我使用过的任何其他维基上看到过这一点 所以我想知道是否有一些脚本配置不正确 定期运行rebuildAll php or refres
  • 如何将 XAML 转换注入到我的构建中?

    我想针对我的 XAML 资源字典运行自定义 EXE 假设我得到的这个 exe 将删除注释 空格和未使用的资源 原始 XAML 文件需要保持不变 但最终出现在 XAP 和 DLL 中的 XAML silverlight 和 BAML wpf
  • 使用 Detected Idiom 实现 is_destructible

    这是我的实现is destructible v https en cppreference com w cpp types is destructible template
  • Javascript 警报在页面显示之前加载

    在我的手机上 在 Safari 中如果我转到默认页面alert Hello 在正文 onload 事件中 警报显示 我的默认页面在后台完全可见 如果我随后转到另一个网站 例如 bbc co uk 然后在地址栏中输入默认页面的网址 则警报会在
  • 为什么 Docker Django 管理员崩溃并显示代码 245

    我正在 OSX 10 15 3 上使用 runserver 运行 Django 版本 3 0 3 使用我的应用程序没有问题 但是当我尝试访问时http localhost 8000 admin http localhost 8000 adm
  • Web Api - 如何检测响应何时完成发送

    在 Web api 方法中 我生成一个文件 然后将其流式传输到响应 如下所示 public async Task
  • NSUserDefaults standardUserDefaults 不适用于扩展

    我将应用程序组添加到开发人员门户中的应用程序 ID 并在我的配置文件中使用该应用程序 ID 我在 Xcode 中的产品标识符设置为该应用程序 ID 在我的应用程序委托中 我从 didFinishLaunchingWithOptions 中调
  • 在Python中捕获imaplib异常(使用IMAPClient包)

    我正在使用外部库 IMAPClient 当登录失败时 我看到以下错误 imaplib error AUTHENTICATIONFAILED Authentication failed 当我尝试时except imaplib error 我得
  • 将 IAsyncEnumerable 转换为列表

    所以在 C 8 中我们添加了IAsyncEnumerable界面 如果我们有一个正常的IEnumerable我们可以做一个List或者我们想要从中得到的几乎任何其他集合 感谢那里的 Linq var range Enumerable Ran
  • 如何在 openGL ES 2.0 中执行 2 遍以获得模糊效果

    为了创建模糊效果 理论上需要创建 2 个顶点着色器 一个用于水平通道 第二个用于垂直通道 然后使用一个片段着色器进行实际采样 我的问题是 如何实际执行 2 个顶点着色器 我是否需要渲染 然后通过 glReadPixels 返回像素 然后再次
  • jQuery 如果宽度等于百分比

    我知道以像素为单位你可以做这种事情 但如果使用百分比 则不会返回任何内容 如果我的 CSS 使用百分比 我该如何处理 我基本上需要查看具有特定值的 div 然后触发脚本的变体 jQuery if modPopUp css width 32
  • 使用 DirectX 或 OpenGL 显示 100 个浮动立方体

    我想使用显示 100 个浮动立方体DirectX or OpenGL 我正在寻找一些示例源代码或该技术的描述 我无法正确显示多个立方体 我在网上搜索了一系列很好的教程 尽管他们谈论了如何做3D基元 我找不到有关如何进行大量操作的信息3D原语
  • 如何为 VB.net 程序创建启动屏幕

    如何为 vb net 程序创建启动屏幕 我想制作一个在程序开始之前和结束之后出现的视觉效果 这可能吗 打开你的 vb net 添加新项目 转到表单的属性 清除文本 Set the 表单边框样式没有 插入背景图像 将背景图像设置为拉伸 Add
  • 如何删除xlwings中的列?

    我在用着xlwings在 Windows 上 带有 Python 2 7 的 Excel 2007 并且想要使用以下命令删除范围或列xlwings 据我所知 删除范围或列是一个缺失的功能 所以我尝试按照给出的说明进行操作here http
  • 隐式本地化和嵌入资源

    我们可以在使用嵌入资源文件 resx 的同时在 asp net meta resourcekey 中使用隐式本地化吗 如果 app localresouces 中的资源设置为 内容 则一切正常 但如果将其设置为 嵌入 则无法使其工作 使用隐
  • Android:如何以编程方式使活动窗口半透明?

    有没有办法以编程方式使活动窗口显示为半透明 出于我的目的 我无法使用静态 XML 资源 我尝试将背景资源设置为半透明颜色 但这只会使背景显示为纯黑色 把它写在你的活动课上 Window window this getWindow windo
  • 如何管理需要AsyncTask调用的不同任务

    我有一个外部库可以使用 它通过互联网与服务器进行通信 每当我需要从互联网获取一些信息时 Android 都会强制我使用异步任务 到目前为止没有问题 但是 我收到越来越多的任务来从互联网检索 以不同方式 数据 并且我不喜欢为每个调用增加不同的