我想建立一个每次我想做网络连接的类,我会用它.
我想首先打开一个对话框,然后建立网络连接(或者从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调用多个函数进行网络连接所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)