2012-09-04 3 views
0
안드로이드

에 super.onbackpressed :지연 내가 인터넷 연결이 있는지 감지하는 스크립트를 만들어

public static boolean isOnline() { 
    try { 
     InetAddress.getByName("google.hu").isReachable(3); 
     return true; 
    } catch (UnknownHostException e){ 
     return false; 
    } catch (IOException e){ 
     return false; 
    } 
} 

앱이 사용자에게 경고하고 종료됩니다 어떤 인터넷이 없다면! 하지만 super.onBackPressed를 20 초 동안 지연시키는 방법은 무엇입니까? :)

this.toast1 = new Toast(getApplicationContext()); 
    toast1.setGravity(Gravity.CENTER, 0, 0); 
    toast1.setDuration(20000); 
    toast1.setView(layout); 
    toast1.show(); 
    super.onBackPressed(); 

답변

1
Thread delayThread= new Thread(new Runnable() 
       { 
        @Override 
        public void run() 
         { 
          try 
       { 
        Thread.sleep(1000); 
       } 
      catch (InterruptedException e) 
       { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

          activityInstance.this.runOnUiThread(new Runnable() 
           { 
            @Override 
            public void run() 
             { 
              super.onBackPressed(); 
             } 
           }); 
         } 
       }); 
      delayThread.start(); 
+0

왜이 d.start입니다 호출하는 Runnable으로 postDelayed()을 사용하는 것입니다? :) – user1632298

+0

그리고 4.0 안드로이드는 스레드를 지원하지 않습니다. – user1632298

+0

'd.start()'는'delayThread.start()'여야합니다. 물론 Android 4.0은'Thread'를 지원합니다. 왜 그렇지 않다고 생각합니까? 또한,이 쓰레드는 20 초가 아니라 1 초 동안 잠들기 때문에'Thread.sleep (20000)'을 사용해야한다. 그리고 당신은'super.onBackPressed()'를 호출하기를 원하지 않는다. 당신은 단지 그 활동에 대해'finish()'를 호출해야한다. –

0

는 가장 쉬운 onCreate()Handler을 만들고 super.onBackPressed()