Android:异步任务返回值发生了什么?



如果调用Aysnc任务的应用程序已经完成,返回值或对Aysnc任务的调用会发生什么?

假设我在Aysnc任务中调用了一个网络操作,并且调用它的UI线程已经完成了该操作。

我的目标是保存在N/W呼叫中收到的数据,以便下次我需要重新进行呼叫?

下面是代码片段,在doInBackground()中,我发出一个SOAP请求,当请求打开时,调用Aync任务的主UI不知何故死亡/完成。我的反应会怎样?如何保存响应以备将来使用。

    Code:
        class SOAPCallAyncTask1 extends AsyncTask<String, String, String> {
    ProgressDialog pd = null;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pd = new ProgressDialog(SoapMainActivity.this);
        pd.setMessage("Please wait...");
        pd.setCancelable(false);
        pd.show();
    }
    @Override
    protected String doInBackground(String... params) {
        String theResult = "";
        byte[] result = null;
        try {
            result = callSOAPServer();
            theResult = new String(result);
            Log.d("R-Doit in backgound", theResult);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return theResult;
    }
    @Override
    protected void onPostExecute(String theResult) {
        super.onPostExecute(theResult);
        pd.dismiss();
        Log.d("R-Result", theResult);
    }
}

AsyncTask将完成执行,即使应用程序被关闭/销毁,除非系统调用它停止执行(通常不是这种情况)。

您可以保存在SharedPreferences的网络调用中收到的数据,然后在活动被创建时(或在onResume()中)再次(如果需要)通过从SharedPreferences获取保存的数据来相应地更新UI。如果您看到在最后一次AsyncTask执行期间没有获取数据,那么您可以相应地发出一个新的执行请求。

相关内容

  • 没有找到相关文章

最新更新