android - Android 中的处理程序与异步调用

标签 android multithreading handler android-asynctask

目前我正在使用 Handlers 调用 Web 服务方法以使其在后台运行。问题是它需要更多时间来给出响应,就性能而言似乎更昂贵。现在我打算使用异步调用,哪个最好? Android 中的处理程序和异步调用之间有什么区别?请帮助我提出最佳解决方案。

为了您的引用,我在这里给出了一些代码 fragment

signIn.setBackgroundResource(R.drawable.signin_press);
changeImage=new Runnable(){
     public void run(){                                 
            signIn();
        }
    };      
signinHandler.post(changeImage);

当我调用此方法时单击“登录”按钮时,在调用此方法之前,UI 似乎已挂起几分钟。在此方法中,涉及两个昂贵的 Web 服务调用来验证和注册用户。我如何规范应用程序的缓慢。帮助我。

最佳答案

使用 Thread 有一定的优势和 Handler分别使用 AsyncTask这实际上取决于您的使用情况,这些好处与损害的分析可能会归结为您。

我会推荐文章 Painless Threading了解 Android 上的线程。

EDIT 以获取有问题的其他信息。

如果我们改编来自 Painless Threading 的代码链接的文章你可以得到类似的东西。

  new Thread(new Runnable() {
    public void run() {
      signIn();
      signinHandler.post(new Runnable() {
        public void run() {
          //TODO: Something to notify of login complete / continue processing.
        }
      });
    }
  }).start();

在 TODO 中,您需要继续或通知执行,我不知道 signIn() 当前正在处理什么,所以如果它跨越 UI 线程,则必须进行重构。

关于android - Android 中的处理程序与异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300574/

相关文章:

java - 如何使用 Android 共享 Intent 选择器 (ACTION_SEND) 监听/捕获社交媒体共享的成功事件?

javascript - JavaScript 线程和 Silverlight UI 线程之间是什么关系?

java - volatile 变量没有给出预期的输出

c - 不熟悉的错误

android - 从 Eclipse 迁移到 Android Studio 导致问题,应用程序无法启动

android - onCreate() 中的新处理程序

android - 如何在 webview android 中打开一个 pdf 文件?

android - 从sdcard Android Mediaplayer播放音频

Android 生成发布 apk,任务 ':app:transformClassesAndResourcesWithProguardForProductionRelease' 失败

java - 音乐停止时的 Android MediaPlayer 处理程序