如何检查doinbackground(Void .. ar)方法在android中完成

时间:2014-06-04 11:50:12

标签: android android-asynctask

我正在创建一个从在线获取值的程序。我使用AsynTask类进行后台处理。我从web获取一些值并在类变量中设置值。我的问题是值在很晚才设置变量。并且我的执行进一步处理并找到变量值null。如何检查doInBackground()方法是否已完全处理,值是否设置为变量。这样我就可以使用这些变量值了。

1 个答案:

答案 0 :(得分:0)

最好的方法之一是使用一种observer 设计模式

首先创建一个包含方法的接口(取决于你的返回值等):

public interface OnTaskCompleted{
    void onTaskCompleted(String xml);
}

然后,您需要implement活动的界面,实例化您的asynctack,请参阅:

public class MainActivity extends SherlockFragmentActivity implements OnTaskCompleted

然后完成,你将把MainActivity的实例(由 polymorphisme 也是OnTaskCompleted)传递给你的asyntask。 这里我的asyntask类处理程序名为XMLParser

public class XMLParser {

       private OnTaskCompleted listener;

    public XMLParser(OnTaskCompleted mainActivity, String url){
        getXMLFromURL(mainActivity,url);
    }

[......] 

//here when the work is done you call the OnTaskComplete Method
               @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
                        //CALL HERE
            listener.onTaskCompleted(result);
        }
}

我希望它会对你有所帮助。对我来说就像是一种魅力。