2013-03-06 60 views
1

我有一些活動(說A & B),並且通過使用Handler-post Delayed方法從一個活動中調用另一個活動。Android - 按下主頁按鈕之後,活動從處理程序開始

我的邏輯是在應用程序開始活動A,3秒後去活動B. & 3秒後,它是完美的工作。

問題是我已經設置三個seconds.And在這些3秒時間延遲,如果我點擊home鍵,這是不言而喻的背景和在規定的時間三秒應用回來後立即前景並顯示下一個活動。

 try { 

     handler.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 


       finish(); 
       Intent i = new Intent(Asplash.this, Example.class); 
       i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
       startActivity(i); 
      } 
     }, 3000); 

    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 

} 




    @Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 
     handler.removeCallbacksAndMessages(null); 
     finish(); 

    return super.onKeyDown(keyCode, event); 
} 

我使用這樣的代碼,併爲處理程序在TIME後退按鈕做工精細,應用程序是完全去後臺。 ,但是如果我按HOME按鈕,它最初會進入背景,在HANDLER TIME(3000)完成後,應用程序即將到達前臺。我希望它只在按Home按鈕之後才能在後臺運行。

請給我建議>

+0

你不能抓住'HOME'按鈕,因爲用戶必須能夠離開應用程序。否則,你可以編寫一個應用程序,它不會在後退按鈕和主頁按鈕上執行任何操作,從而使你陷入應用程序中。 – tolgap 2013-03-06 09:30:06

回答

3

你只是把這個在你的你的活動onPause()方法:

@Override 
public void onPause() { 
    handler.removeCallbacksAndMessages(null); 
    super.onPause(); 
} 

所以,當你的應用程序轉到後臺,它會刪除的處理程序回調。這也適用於後退按鈕和主頁按鈕。

+0

我已經非常廣泛地使用了這樣的東西,它工作得很好。 – ScouseChris 2013-03-06 09:39:35

+0

沒錯,我以前用過它,但我用它與onReume()的組合......也是這就是爲什麼它搞砸了。謝謝.....還有一個問題,請在此屏幕啓動3秒,如果我cahnge我的設備方向,應用程序永久關閉。任何想法?????????/ – sai 2013-03-06 09:49:02

+1

你可以看看這:[改變方向,而不是重新啓動活動](http://stackoverflow.com/questions/10235178/change-layouts-but-not-restart-activity-on-my-android-app)。如果您沒有在清單中告訴它在'orentationChange'上做什麼,Android會殺死並重新開始活動。 – tolgap 2013-03-06 10:12:50

1

您shold開始從的onResume處理器()方法,如:

@Override 
public void onResume() { 
    try { 
     handler.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       finish(); 
       Intent i = new Intent(Asplash.this, Example.class); 
       i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
       startActivity(i); 
      } 
     }, 3000); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

而在的onPause(除去手柄)喜歡的:

@Override 
public void onPause() { 
    handler.removeCallbacksAndMessages(null); 
    super.onPause(); 
} 

這將確保啓動其他活動,即使你在3秒內按回家

+0

但是,它是應用程序啓動時的默認屏幕,所以我放在了onCreate(..)。從此它將進入下一個活動。你的方法可能嗎? – sai 2013-03-06 10:06:04

相關問題