Android Handler的postDelayed()關閉的方法及遇到問題
最近在使用Handler的時候 發(fā)現(xiàn)了一個錯誤的使用方法
就是直接new 類似這樣
new Handler().postDelayed(new Runnable() { @Override public void run() {showPaySuccessDialog.dismiss(); }}, 1000);
這種用法對于業(yè)務簡單的情況 也沒錯 比如 定時關閉一個dialog
但是對于復雜的業(yè)務場景 這么用是不對的 也不是不對吧 這么用的話有bug
遇到的問題我用 直接new Handler()的方法去執(zhí)行一個播放語音的方法代碼如下
//todo 此處檢測 new Handler().postDelayed(new Runnable() {@Overridepublic void run() { if (!MediaplayerUtil.isPlaying()) {MediaplayerUtil.playMusic(context, R.raw.pay_tips); }} }, 15 * 1000);
我以為這樣寫沒錯 但是在測試的時候 出現(xiàn)了一個問題頁面都關閉了 這個語音播報 還在繼續(xù) 哈哈哈 我同事聽到都驚呆了頁面都沒有了 語音還在播放 很尷尬當時聽到這個語音 我一耳就聽出了問題
因為當時這么寫 就覺得不對勁 可能會出問題 所以我加了一個TODO標記提示這里可能會出問題
解決方法歸根結底 還是我的寫法問題 不夠正規(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 //要做的事情,這里再次調用此Runnable對象,以實現(xiàn)每兩秒實現(xiàn)一次的定時器操作 handler.postDelayed(this, 2000); }};
3、使用PostDelayed方法,兩秒后調用此Runnable對象
實際上也就實現(xiàn)了一個2s的一個定時器
handler.postDelayed(runnable, 2000);
4、如果想要關閉此定時器,可以這樣操作
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彈一次Toasthandler.postDelayed(this, 3 *1000);Toast.makeText(this, '延時5s', Toast.LENGTH_SHORT).show(); }};// 延遲2s彈Toasathandler.postDelayed(runnable,2000); } @Override protected void onDestroy() {super.onDestroy();//在頁面結束時 清空隊列消息if (handler != null) { handler.removeCallbacksAndMessages(null); handler = null;} }
到此這篇關于Android Handler的postDelayed()關閉的方法的文章就介紹到這了,更多相關Android Handler的postDelayed()關閉內容請搜索好吧啦網以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
1. 低版本IE正常運行HTML5+CSS3網站的3種解決方案2. ASP.NET泛型三之使用協(xié)變和逆變實現(xiàn)類型轉換3. jsp+servlet簡單實現(xiàn)上傳文件功能(保存目錄改進)4. 如何在jsp界面中插入圖片5. XML基本概念XPath、XSLT與XQuery函數(shù)介紹6. JS中map和parseInt的用法詳解7. PHP循環(huán)與分支知識點梳理8. jsp實現(xiàn)登錄界面9. AspNetCore&MassTransit Courier實現(xiàn)分布式事務的詳細過程10. JSP數(shù)據交互實現(xiàn)過程解析
