2013-05-02 3 views
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; 
     } 
    } 

, 감사

+0

쓰기? – edoardotognoni

+1

당신의 logcat을 게시하십시오! 앱이 정확히 어디에서 충돌하나요? – caiocpricci2

+0

귀하의 작품에있는 기사는 무엇입니까? –

답변

0

당신은 게시물을 어딘가에 실행하는 당신의 기사를 사용하고 있습니까? 당신이 서버를 치기 전에 conncetivity를 확인하더라도, 당신은 타임 아웃 예외 또는 알 수없는 호스트 exception.So pleas 귀하의 doinbackground 코드 try catch 및 포스트 실행 체크 기사를 사용하기 전에 기사를 확인하십시오.

+0

답장을 보내 주셔서 감사합니다.하지만 어떻게해야합니까? 많은 사람들 후, 나는 그것을 실행하는 데 사용했지만 아무 일도 일어나지 않았다 : s – Sherlock

0

이것을 사용하여 동일한 prob에 마주 치면 시도하십시오. . 한 OnCreate

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

// 새로운 MyTask에

() (rssFeed)을 실행; // 귀하의 코드

및 이후에 발생합니다.

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

사드에게 고마워, 고마워. 시도해 보겠다. – Sherlock

+0

아무 일도 일어나지 않았다 :(이유를 모른다 : – Sherlock

+0

권한을 추가 했는가? 안드로이드 선언에 .. 언젠가는 작동합니다. Saad

관련 문제