android– 使用Asynctask调用多个函数进行网络连接

android– 使用Asynctask调用多个函数进行网络连接,第1张

概述我想建立一个每次我想做网络连接的类,我会用它.我想首先打开一个对话框,然后建立网络连接(或者从SQL获取内容或从Web下载或更新SQL),然后关闭对话框.我需要等待功能结束才能继续.我想使用AsyncTask,但我无法找到一种方法来确定在AsyncTask中使用哪个函数.我找到了两个解决方案,s

我想建立一个每次我想做网络连接的类,我会用它.
我想首先打开一个对话框,然后建立网络连接(或者从sql获取内容或从Web下载或更新sql),然后关闭对话框.

我需要等待功能结束才能继续.

我想使用AsyncTask,但我无法找到一种方法来确定在AsyncTask中使用哪个函数.我找到了两个解决方案,switch-case或尝试使用java反射发送函数.两种解决方案都不太好.

有人有另一种想法或其他方式来做到这一点?

解决方法:

考虑使用Command设计模式.
Here is Java example.您可以通过回调对其进行扩展,以便在完成后台工作后执行某些 *** 作.

public abstract class Command {    protected AsyncTaskCallback callback;    public Command(AsyncTaskCallback callback) {            this.callback = callback;    }    public abstract voID execute();    public AsyncTaskCallback getCallback() {        return callback;    }    public interface AsyncTaskCallback {        public voID onPreExecute();        public voID onPostExecute();    }}

祈求:

public class Invoker extends AsyncTask<VoID, VoID, VoID> {    private Command command;    public static voID execute(Command command) {            new Invoker(command).execute();    }    private Invoker(Command command) {            this.command = command;    }    @OverrIDe    protected VoID doInBackground(VoID... params) {            return command.execute();    }    @OverrIDe    protected voID onPreExecute() {            if (command.getCallback() != null) {                    command.getCallback().onPreExecute();            }    }    @OverrIDe    protected voID onPostExecute(VoID result) {            if (command.getCallback() != null) {                    command.getCallback().onPostExecute();            }    }

}

因此,您的AsyncTask不知道它正在执行哪个命令,因此可以在整个应用程序中使用.现在,您可以在Activity中实现接口AsyncTaskCallback,并处理所有与UI相关的内容.

例:

public class MyActivity extends Activity implements AsyncTaskCallback {...public voID onPreExecute() {    showProgress();}public voID onPostExecute() {    hIDeProgress();    doOtherThings();}...Command myCommand = new Command(this) {    @OverrIDe    public voID execute() {        // Do specific background work    }}Invoker.execute(command);

你还需要处理orientation changes.

总结

以上是内存溢出为你收集整理的android – 使用Asynctask调用多个函数进行网络连接全部内容,希望文章能够帮你解决android – 使用Asynctask调用多个函数进行网络连接所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1106414.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存