没有连接到互联网的崩溃应用程序

时间:2013-05-02 09:33:45

标签: android

我有一个问题,当我使用连接的应用程序时,一切都很酷,但当我关闭连接我的应用程序崩溃时,我想知道如何让这个应用程序工作而没有连接它在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;
        }
    }

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

2 个答案:

答案 0 :(得分:0)

你是否在某个地方执行帖子时使用你的文章?即使你在点击服务器之前检查了一致性,你也有可能收到超时异常或未知的主机异常。所以你可以在try catch和post中查看你的doinbackground代码执行检查在开始使用之前对文章进行空检查。

答案 1 :(得分: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;
}
}