点击Android中的监听器,如何检查在特定时间段内是否没有点击按钮



我的应用程序中有10个不同的按钮,用于执行不同的任务。我想开发一个持续检查(监听)的服务,如果用户在特定时间内没有点击任何按钮,比如说5秒,我希望执行其他任务。如何检查用户是否未单击任何按钮?如果有人有任何想法,请告诉我。

您可以简单地将Timer设置为所需的长度。单击按钮时,只需重置计时器即可。在onResume中启动计时器,这样即使用户从电话或其他活动中回来,计时器也会启动。您可能也应该在活动的onPause中停止计时器。

在您的每个点击监听器中,保存最后一个按钮被点击的时间:

private long lastClickTimestamp;
private Handler handler = new Handler();
public void onCreate( Bundle saved ) {
   BackgroundJob job = new BackgroundJob();
   handler.postDelayed( job, SECONDS_TO_WAIT * 1000 );
   button1.setClickListener( new OnClickListener() {
       public void onClick( View view ) {
           lastClickTimestamp = System.currentTimeInMillis();
           // do the listener logic for button 1 here.
       }
   });
   button2.setClickListner( new OnClickListener() {
       public void onClick( View view ) {
           lastClickTimestamp = System.currentTimeInMillis();
           // do the listener logic for button 2 here.
       }
   });
   // repeat that for all 10 buttons.
}

现在,更聪明的开发人员将创建一个可重复使用的基类,该基类处理一次时间戳设置,然后在10个按钮中的每个按钮中重复使用该基类。但是,这取决于你。然后后台作业看起来像:

public class BackgroundJob implements Runnable {
   private boolean done = false;
  // meanwhile in job:
  public void run() {
     if( lastClickTimestamp > 0 && System.currentTimeInMillis() - lastClickTimestamp > SECONDS_TO_WAIT * 1000 ) {
       // let's do that job!
     }
     if( !done ) {
        // reschedule us to continue working
        handler.postDelayed( this, SECONDS_TO_WAIT * 1000 ); 
     }
  }
}

如果你必须使用一项服务,你可以向该服务发送通知,说点击了一个按钮,然后该服务可以跟踪发生这种情况的时间。我不会为此使用服务,因为如果应用程序被放在后台或被杀死,播放动画或声音就不需要生存。服务是指当某人在做其他事情时播放音乐、聊天应用程序,或者当用户不与应用程序交互时需要在后台运行的事情。你所描述的可以像我所展示的那样完成,因为当用户接到电话或短信时,他们会离开你的应用程序,你播放的动画或声音可能也应该停止。使用我展示的Handler选项非常容易。更困难,但可行,与服务。

每次单击按钮时,将一些日历对象更新到一个新的日历实例,然后您可以检查该日历的时间,并查看它是否超过5分钟。

//this is a field
Calendar calendar;
public void onClick(View v) {
calendar = Calendar.getInstance();
//etc
switch(v.getId()) {
}
}

相关内容

最新更新