java - 在 getview() 方法中使用异步任务

标签 java android azure android-asynctask azure-mobile-services

我有这些代码行,我想在 CustomAdaptergetview() 方法中使用它们。

 new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... params) {
                    try {
                        final MobileServiceList<User> result =
                                mUser.where().field("name").eq(currentItem.getTo()).select("designation").execute().get();
                        int counter=
                                mUser.where().select("designation").execute().get().getTotalCount();
                        for (User item : result) {
                            // Log.i(TAG, "Read object with ID " + item.id);
                            desig[0] = item.getDesignation();
                            Log.v("FINALLY DESIGNATION IS", desig[0]);


                        }

                    } catch (Exception exception) {
                        exception.printStackTrace();
                    }
                    return null;
                }

                @Override
                protected void onPostExecute(Void aVoid) {
                    super.onPostExecute(aVoid);
                    // gb.setDesignation(desig[0]);

                    designation.setText(desig[0]);

                }
            }.execute();

这是我的 AsyncTask 代码,我用它来填充自定义 ListView 。这段代码不断运行,我不知道多少次。但最终,经过对 TextView 的多次更新(designation),它给了我正确的结果。这不仅会降低我的应用程序的性能,还会在达到结果之前在 TextView 上显示多个更新。

我正在 desig[0] 变量中获取数据,请查看我的代码。

数据来自 azure 但如果您不是 azure 人员,请不要担心。请帮我解决 Java 部分。

问题

我的问题是如何在 getview() 方法中使用异步任务。我是否必须创建函数,我可以稍后调用它。数据来自 azure 但如果您不是 azure 人员,请不要担心。请帮我解决 Java 部分。请各位帮助一下

最佳答案

每次必须绘制一行 ListView 时都会调用

getView。所以不要忘记会有多个doInBackground同时运行。什么是名称? ListView 元素内的 View ?

编辑

由于指定是每个单元格中的文本,因此您必须确保要升级的单元格是好的单元格。 我通常做的是使用 ViewHolder我将其附加到回收的 View 上。然后我将 ViewHolder 注册为监听器(监听 AsyncTask)。 ViewHolder 启动请求并向 AsyncTask 提供 ID。然后,当 AsyncTask 运行时,我会定期询问 ViewHolder 提供给 AsyncTask 的 ID 是否正确。如果不是,我取消 AsyncTask (不需要同步)。 然后,当 AsyncTask 完成时,我最后一次检查 ID 是否与 ViewHolder 给出的 ID 匹配,并通知监听器 (ViewHolder )表明结果可用。 这样,您就可以确保 AsyncTask 不会无缘无故地工作。

但是当然这取决于您在 AsyncTask 中实际执行的任务类型...

关于java - 在 getview() 方法中使用异步任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31785780/

相关文章:

java - 操作栏在 Android 应用程序中显示为空

c# - MVC 图像上传 - 上传方向不正确

java - JSF 将 <h :outputLabel> text w. r.t 包装到下一行中它自己的起始索引

java - 有什么方法可以从 Eclipse 的层次结构 View 中隐藏测试类吗?

java - 尝试使用 usb4java 高级库

Java 程序删除 (Mac/Linux)

android - 我需要从图像创建布局

android - opengl对象在移动一段距离后振动

Azure Application Insights - 用于查询 Azure 门户外部数据的 API

node.js - Azure Function Service Bus - 托管标识 - 服务总线帐户连接字符串