2015-08-08 78 views
1

在我的應用程序中,我有兩項活動:主要活動和廣告活動。
在我的主要活動中,如果主活動中的特定持續時間(例如5秒)沒有任何事件(按鈕單擊,listview單擊,輸入文本等),我想要啓動Ads Activity。
此代碼在5秒後啓動Ads Activity,但如果有事件發生,我想延遲它。如果在此活動中沒有特定活動的時間,則開始另一活動

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Intent intent = new Intent(MainActivity.this,AdsActivity.class); 
      MainActivity.this.startActivity(intent); 
     } 
    },5000); 

} 

那麼我該如何做到這一點?

+0

那麼什麼是你的問題? – andrewdleach

回答

1

當發生事件併發布新的可運行時,從您的處理程序中刪除回調。像這樣的東西應該工作:

 protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      handler = new Handler(); 
      postAdAfterDelay(); 
     } 

     // Call this method when a valid event occurs 
     private void onEventOccurred() { 
      handler.removeCallbacksAndMessages(null); 
      postAdAfterDelay(); 
     } 

     private void postAdAfterDelay() { 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        Intent intent = new Intent(MainActivity.this,AdsActivity.class); 
        MainActivity.this.startActivity(intent); 
       } 
      },5000); 
     } 
1

嘗試這樣的事情重新啓動你的活動上話,5秒計時器:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    handler = new Handler(); 
    runnable = new Runnable() { 
     @Override 
     public void run() { 
      Intent intent = new Intent(MainActivity.this,AdsActivity.class); 
      MainActivity.this.startActivity(intent); 
     } 
    }; 
    handler.postDelayed(runnable, 5000); 
} 

private void onYourEvent() { 
    handler.removeCallbacks(runnable); 
    handler.postDelayed(runnable, 5000); 
}