2015-08-08 83 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); 
}