您好,登錄后才能下訂單哦!
這篇文章主要介紹Android Handler的postDelayed()怎么關(guān)閉,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由美國Google公司和開放手機聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。
最近在使用Handler的時候 發(fā)現(xiàn)了一個錯誤的使用方法
就是直接new 類似這樣
new Handler().postDelayed(new Runnable() { @Override public void run() { showPaySuccessDialog.dismiss(); } }, 1000);
這種用法對于業(yè)務(wù)簡單的情況 也沒錯 比如 定時關(guān)閉一個dialog
但是對于復(fù)雜的業(yè)務(wù)場景 這么用是不對的 也不是不對吧 這么用的話有bug
我用 直接new Handler()
的方法去執(zhí)行一個播放語音的方法
代碼如下
//todo 此處檢測 new Handler().postDelayed(new Runnable() { @Override public void run() { if (!MediaplayerUtil.isPlaying()) { MediaplayerUtil.playMusic(context, R.raw.pay_tips); } } }, 15 * 1000);
我以為這樣寫沒錯 但是在測試的時候 出現(xiàn)了一個問題
頁面都關(guān)閉了 這個語音播報 還在繼續(xù) 哈哈哈 我同事聽到都驚呆了
頁面都沒有了 語音還在播放 很尷尬
當(dāng)時聽到這個語音 我一耳就聽出了問題
因為當(dāng)時這么寫 就覺得不對勁 可能會出問題 所以我加了一個TODO
標(biāo)記
提示這里可能會出問題
歸根結(jié)底 還是我的寫法問題 不夠正規(guī) 偷懶行為 哈哈哈
1、首先創(chuàng)建一個Handler對象
Handler handler=new Handler();
2、然后創(chuàng)建一個Runnable對象
Runnable runnable=new Runnable(){ @Override public void run() { // TODO Auto-generated method stub //要做的事情,這里再次調(diào)用此Runnable對象,以實現(xiàn)每兩秒實現(xiàn)一次的定時器操作 handler.postDelayed(this, 2000); } };
3、使用PostDelayed方法,兩秒后調(diào)用此Runnable對象
實際上也就實現(xiàn)了一個2s的一個定時器
handler.postDelayed(runnable, 2000);
4、如果想要關(guān)閉此定時器,可以這樣操作
handler.removeCallbacks(runnable);
Handler 定時器 正確使用方法
//初始化先 private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { // 這個是循環(huán) 間隔3s彈一次Toast handler.postDelayed(this, 3 *1000); Toast.makeText(this, "延時5s", Toast.LENGTH_SHORT).show(); } }; // 延遲2s彈Toasat handler.postDelayed(runnable,2000); } @Override protected void onDestroy() { super.onDestroy(); //在頁面結(jié)束時 清空隊列消息 if (handler != null) { handler.removeCallbacksAndMessages(null); handler = null; } }
以上是“Android Handler的postDelayed()怎么關(guān)閉”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。