android在按键后检测用户不活动
在我的mediaplayer中,我添加了一个视图,该视图在按下菜单键时显示,我希望它在一段时间后隐藏,即用户不想看到该视图,该视图是水平的,我希望它在几秒钟后隐藏,用户不会按右键或左键 我把我的逻辑放在这里,但没有成功: “我的观点与此类似” 代码从未到达android在按键后检测用户不活动,android,user-interaction,Android,User Interaction,在我的mediaplayer中,我添加了一个视图,该视图在按下菜单键时显示,我希望它在一段时间后隐藏,即用户不想看到该视图,该视图是水平的,我希望它在几秒钟后隐藏,用户不会按右键或左键 我把我的逻辑放在这里,但没有成功: “我的观点与此类似” 代码从未到达 if(getLastInteractionTime()+5000 >= System.currentTimeMillis()) 而且我也不知道该怎么停止这个线程 我该怎么做? 任何其他方法都会更受欢迎 提前谢谢。试试这个。5秒后,当用
if(getLastInteractionTime()+5000 >= System.currentTimeMillis())
而且我也不知道该怎么停止这个线程
我该怎么做?
任何其他方法都会更受欢迎
提前谢谢。试试这个。5秒后,当用户处于非活动状态时,它将发出toast通知onUserInteraction方法是此代码的主要部分
Handler handler;
Runnable r;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler = new Handler();
r = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "user inactive",
Toast.LENGTH_SHORT).show();
}
};
startHandler();
}
@Override
public void onUserInteraction() {
// TODO Auto-generated method stub
super.onUserInteraction();
stopHandler();//stop first and then start
startHandler();
}
public void stopHandler() {
handler.removeCallbacks(r);
}
public void startHandler() {
handler.postDelayed(r, 5000);
}
您可以在活动中尝试onUserInteraction()方法class@IllegalArgument这是一个很好的解决方案。内存泄漏安全吗?不,不是要处理,您必须停止处理程序,暂停并销毁,然后在恢复时重新开始。
Handler handler;
Runnable r;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handler = new Handler();
r = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "user inactive",
Toast.LENGTH_SHORT).show();
}
};
startHandler();
}
@Override
public void onUserInteraction() {
// TODO Auto-generated method stub
super.onUserInteraction();
stopHandler();//stop first and then start
startHandler();
}
public void stopHandler() {
handler.removeCallbacks(r);
}
public void startHandler() {
handler.postDelayed(r, 5000);
}