[英]How to stop a timer in android studio and then start again from when it was stopped?
[英]Android: How to start and stop a loop that fires on a timer?
我的 GUI 中有兩個按鈕。 “一回合”和“自動播放”。 我希望 AUTO PLAY 按鈕開始自動按下計時器上的 ONE TURN 按鈕,我最終將使用 slider 或其他東西來控制它的速度。 但是,我想要這樣當我再次按下自動播放按鈕時,它會停止自動激活第一個按鈕。 自動播放有效,但停止自動播放不起作用,我不知道如何停止。 也許我完全使用了錯誤的解決方案,或者我只是不知道如何正確停止可運行文件? 任何幫助將不勝感激,我已經做了很多搜索,但沒有發現任何有用的東西。 我的點擊代碼自動播放如下:
public void autoClick(final View view) {
final Handler handler = new Handler();
isAutoPlaying = !isAutoPlaying;
final View dummyView = view;
Runnable runnable = null;
if(isFirstAutoPlayClick) {
runnable = new Runnable() {
@Override
public void run() {
onClick(dummyView);
handler.postDelayed(this, 1000);
}
};
isFirstAutoPlayClick = !isFirstAutoPlayClick;
}
if(isAutoPlaying) {
Toast.makeText(MainActivity.this,"isAutoPlaying is true", Toast.LENGTH_SHORT).show();
handler.post(runnable);
} else {
Toast.makeText(MainActivity.this,"isAutoPlaying is false", Toast.LENGTH_SHORT).show();
handler.removeCallbacks(null);
}
}
這是GUI的圖片
提前感謝您的時間。
嘗試將handler.removeCallbacks(null)
更改為handler.removeCallbacksAndMessages(null)
看看它是否適合你
編輯您還需要將處理程序局部變量移動到 class 字段。
public class Activity{
Handler handler = new Handler(); //<-- Put it here
public void autoClick(final View view) {
final Handler handler = new Handler(); //<-- Remove this
...
}
}
因此,在調用handler.removeCallbacksAndMessages()
時,您指的是該初始處理程序而不是新實例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.