2013-05-02 77 views
0

我有一個問題,當我用我的應用程序的連接一切都很酷,但是當我關閉連接我的應用程序崩潰,我想知道如何使這個應用程序工作,而不會連接它崩潰的AsyncTask後,這是它,崩潰apllication沒有連接到互聯網

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; 
     } 
    } 

我想知道如何工作了這一切,並感謝

+0

能否請您舉報異常堆棧跟蹤? – edoardotognoni 2013-05-02 09:34:57

+1

發佈您的logcat!你的應用在哪裏崩潰? – caiocpricci2 2013-05-02 09:35:06

+0

什麼是你的PGM文章? – 2013-05-02 09:36:35

回答

0

你是否在使用你的文章後執行某處?即使你在打到服務器之前檢查連貫性,你有可能會收到超時異常或未知的主機異常。所以請在try catch和post執行檢查在開始使用前檢查文章爲空。

+0

謝謝你的答案,但如何做到這一點,我嘗試了許多解決方案,但沒有,我寫這篇文章e在很多人之後,我曾經在post執行過但沒有任何事情發生:s – Sherlock 2013-05-02 09:43:41

0

使用這個,嘗試一次我面臨同樣的問題。 。

在OnCreate中

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

//新MyTask

()執行(的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; 
} 
} 
+0

謝謝你saad,我會嘗試它是否工作謝謝 – Sherlock 2013-05-02 09:56:50

+0

stil什麼都沒發生:(不知道爲什麼:s – Sherlock 2013-05-02 10:06:57

+0

你是否添加了權限在Android的manifesta ..它的作品有時<使用權限的android:name =「android.permission.ACCESS_NETWORK_STATE」/> – Saad 2013-05-02 10:12:29