2011-09-29 3 views
2

다음 문제가 생겼습니다. 네트워크 연결이 감지되지 않으면 내 응용 프로그램을 종료하고 싶습니다. 내 응용 프로그램은 시작 화면으로 시작합니다. 네트워크 연결이없는 경우 시작 화면과 토스트를 표시 할 수 있습니다 신호 장치에 다음 응용 프로그램SplashScreen 안드로이드에 토스트보기

내 시작 화면 코드에서 이런 일이 종료 : 내 코드를 볼 수

내부에서 onCreate()를

ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkinfo = connectivitymanager.getActiveNetworkInfo(); 
     connected = networkinfo != null && networkinfo.isAvailable() 
       && networkinfo.isConnected(); 
     Log.v("Network state : ", connected + ""); 

     Thread splashThread = new Thread() { 
      @Override 
      public void run() { 
       try { 
        int waited = 0; 
        while (waited < 5000) { 
         sleep(100); 
         waited += 100; 
        } 
       } catch (InterruptedException e) { 
        // do nothing 
       } finally { 
        Looper.prepare(); 
        if (connected == false) { 
         Toast.makeText(
           splashscreenActivity.this, 
           "No Network Connection is available on device.", 
           Toast.LENGTH_LONG).show(); 
         finish(); 
         System.exit(0); 
        } else { 
         finish(); 
         startActivity(new Intent(splashscreenActivity.this, 
           mainActivity.class)); 
        } 
        Looper.loop(); 
       } 
      } 
     }; 
     splashThread.start(); 

1. 반드시을 날 안내 내가 어떻게 할 수 그 축배를 보여라. 2.Or 나에게이

감사

을 할 수있는 다른 더 좋은 방법을 제안

편집 :

는 회신 당신에게 모두 감사합니다

내가되는 SplashScreen 활동을 통해 토스트를 보여주는 다르 멘의 길을 선택했다 :

근무한 코드는 다음과 같습니다.

if (connected == false) { 
      splashscreenActivity.this.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        Toast.makeText(splashscreenActivity.this, 
          "No Internet Connection.", 3000).show(); 
       } 
      }); 
      finish(); 
     } else { 
      //migrate to main activity from splashscreen 
     } 
+0

스플래시 화면을 표시하기 전에 확인을 수행하지 마십시오. 그러면 스레딩을 시작하기 전에 확인하십시오. 또는 다음 액티비티 컨트롤의 스플래시 화면이 전달 된 후에 수행하십시오. –

+0

1) finish(); 2) startActivity (새로운 의도 (splashscreenActivity.this, mainActivity.class)); 2) 1) – drifter

+0

스플래시 화면이 표시 될 때 축배를 표시 할 수 없습니까 ?? – Shruti

답변

2

splashscreenActivity.this.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        Toast.makeText(c, "Internet connection not currently available.", 3000).show(); 
       } 
      }); 
0

가 그냥 경우 다른 블록을 추가합니다. (UR 연결 네트워크 정보를 사용하여)

if(connected){ 
//put the splash thread here 
}else{ 
finish(); 
} 
+0

Walid Hossain에게 답하는 것은 고맙지 만 어디에서 축배를 보여야합니까? – Shruti

3

당신은 이런 식으로 작업을 수행 할 수 처리기 .Put 다른 조건

Handler mHandler = new Handler(Looper.getMainLooper()); 

mHandler.post(new Runnable() { 
           public void run() { 

            Toast.makeText(Splash.this, "Network error", Toast.LENGTH_LONG).show(); 
             finish(); 

           } 
          }); 

또는 다음 코드를 사용, 내 응용 프로그램에서이 일을하고있다 : NetworkError 클래스 같은 이미지와 다른 레이아웃을 보여줍니다

if(status.equals("CONNECTED")) 
         { 
         startActivity(new Intent(Splash.this,Activity.class)); 
         finish(); 
         }else 
         { 
         startActivity(new Intent(Splash.this,NetworkError.class)); 
         finish(); 
         } 

"아니오 네트워크 ,,,,"(또는 대신 표시 할 어떤 시작 ...)의

당신은 생성하고이

를 호출되지 할 수 있도록이 코드를 작성해야 스레드에서 토스트를 보이고있다
+0

+1 - 나는 토스트를 사용하는 것보다 두 번째 활동 아이디어를 좋아합니다. –

+0

예 nibha 나도 당신의 접근 방식을 좋아해 .. :) 나를 더 하나의 옵션을 보여 주셔서 감사합니다 :) – Shruti

0

그렇지 않을 경우 finally 블록이 사용된다 예외를 잡으려고합니다. 코드에서, 모든 코드를 else 루프에 넣습니다. 5000 시간이 지나면 else 문으로 이동하여 실행하십시오. catch를 추가하는 경우 마지막으로 제거 할 수 있습니다.

+0

확인 Rashmi B ..나는 그것을 처리 할 것이다 – Shruti

+0

나는 예외가 잡혔는지 또는 블록을 빠져 나가는 지 여부에 관계없이 무언가를 실행하고 싶다면 마침내 차단한다. 그래서 try {...} catch {...} finally {...}는 적어도 내 세계에서는 일반적입니다. –

관련 문제