AsyncTask(异步进程)

我有关于异步任务的问题

来自android的Async

使用2个活动“A”和“B”

通过输入一个单词从URL搜索并在DTO中存储值,然后从getter和setter中获取值。

我的复杂性是我在我的活动“B”中实现了异步,并且该活动从同一个DTO获取值。

问题是,我的post知道在后台做的事情已经从DTO和DTO取得价值从互联网上取得价值……如果互联网连接速度慢的话。

我将意图从“A”发送到“B”并在“B”上显示结果

问题:

1.如果我删除异步,则应用程序显示黑页并冻结(仅在连接速度较慢的情况下)但显示数据

2.如果我使用aync,那么有时会显示进度对话框很长时间,并且知道数据已经在UI中显示

代码链接https://www.dropbox.com/s/p27rpokz68sryv3/SearchData.java

https://www.dropbox.com/s/rm3i52djiay327u/SearchData_DTO.java

https://www.dropbox.com/s/2hpufx2a12480on/Search.java

请建议我可能的解决方案

问候

你需要监听asyntask完整的监听器,为此让你的活动一个impliment接口并从Activity B调用该方法,s Asyntask,s onpostexecute方法这样你的活动A就会知道B已经完成了他的任务而你可以做下一步希望这会有所帮助

public interface AsyncTaskCompletedListener { public void OnResultSucceeded(String result); } public class LoginAsyncTask extends AsyncTask { AsyncTaskCompletedListener mAsyncTaskCompletedListener; @Override protected String doInBackground(String... arg0) { // TODO Auto-generated method stub return null; } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); mAsyncTaskCompletedListener.OnResultSucceeded(result); } } 

这是接口Let Activity A impliment this和Activity从onpostexecute调用它

 From Activity A LoginAsyncTask customloginasync = new LoginAsyncTask(getActivity(), FATCH_USER_LIST, arglist); customloginasync.execute(); customloginasync.setOnResultsListener(new AsyncTaskCompletedListener() { @Override public void OnResultSucceeded(String result, int asyncTaskNo) { Logger.logInfo("CustomLogin data=========" + result); ParseAvailableUserData(result); } });