0

我有一个问题,当我使用带连接的应用程序时,一切都很酷,但是当我关闭连接时,我的应用程序崩溃了,我想知道如何让这个应用程序在没有连接的情况下工作,它在 asyncTask 后崩溃,就是这样,

class FetchRecentPosts extends AsyncTask<Void, Void, Void> {
        private ProgressDialog progressDialog;
        @Override
        protected void onPreExecute() {         
            super.onPreExecute();
            progressDialog = ProgressDialog.show(MainActivity.this, "", getString(R.string.loading_message));
        }

        @Override
        protected Void doInBackground(Void... params) {
            articles = Services.getRecentPosts(MainActivity.this);

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            progressDialog.dismiss();
        }
    }

这是我用于连接的类:

private boolean checkInternetConnection() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

        if (cm.getActiveNetworkInfo() != null
                && cm.getActiveNetworkInfo().isAvailable()
                && cm.getActiveNetworkInfo().isConnected()) {
            return true;
        } else {
            Log.i("wa makaynash connexion a sahbé :s", null);
            return false;
        }
    }

我想知道如何处理所有这些,谢谢

4

2 回答 2

0

您是否在某处使用您的文章执行后执行?即使您在访问服务器之前检查连接性,您也很有可能收到超时异常或未知主机异常。因此请在尝试捕获和执行后检查中添加您的 doinbackground 代码在开始使用它之前对文章进行空检查。

于 2013-05-02T09:40:53.367 回答
0

一旦我面临同样的问题,请使用它并尝试。

在 oncreate

if (Utils.isNetworkAvailable(MainActivity.this)) {

// new MyTask().execute(rssFeed); //你的代码

    } else {
        showToast("No Network Connection!!!");
    }

}

这在oncreate之后。

public void showToast(String msg) {
    Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
}

并创建一个名为 Utils 的类并编写此代码

public class Utils {

public static boolean isNetworkAvailable(Activity activity) {
    ConnectivityManager connectivity = (ConnectivityManager) activity
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (int i = 0; i < info.length; i++) {
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}
}
于 2013-05-02T09:42:41.953 回答