<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                我們都知道Hanlder是線程與Activity通信的橋梁,我們在開發好多應用中會用到線程,有些人處理不當,會導致當程序結束時,線程并沒有被銷毀,而是一直在后臺運行著,當我們重新啟動應用時,又會重新啟動一個線程,周而復始,你啟動應用次數越多,開啟的線程數就越多,你的機器就會變得越慢。 為了方便 大家理解,我寫一個簡單的Demo.功能就是每2秒中將應用的Title更換一次。具體步驟如下: 第一步:新建一個Android工程命名為ThreadDemo。 第二步:修改ThreadDemo.java,代碼如下: ~~~ package com.tutor.thread;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;public class ThreadDemo extends Activity { private static final String TAG = "ThreadDemo"; private int count = 0; private Handler mHandler = new Handler(); private Runnable mRunnable = new Runnable() { public void run() { //為了方便 查看,我們用Log打印出來 Log.e(TAG, Thread.currentThread().getName() + " " +count); count++; setTitle("" +count); //每2秒執行一次 mHandler.postDelayed(mRunnable, 2000); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //通過Handler啟動線程 mHandler.post(mRunnable); } } ~~~ 第三步:運行上述工程,查看運行效果: ![](https://box.kancloud.cn/2016-08-10_57aaf0e9b81a3.gif) ? 當然上面不是重點,退出應用時,線程還在跑,打開Logcat視窗或者cmd終端查看,如下(剛吃了午餐回來,線程還在跑著): ![](https://box.kancloud.cn/2016-08-10_57aaf0e9d2854.gif) ? 當我們再次啟動應用時,會重新啟動一個新的線程,如下圖所示: ![](https://box.kancloud.cn/2016-08-10_57aaf0e9f103d.gif) ? 所以我們在應用退出時,要將線程銷毀,我們只要在Activity中的,onDestory()方法處理一下就OK了,如下代碼所示: ~~~ @Override protected void onDestroy() { mHandler.removeCallbacks(mRunnable); super.onDestroy(); } ~~~ ? 所以ThreadDemo.java的完整代碼如下: ~~~ package com.tutor.thread;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.util.Log;public class ThreadDemo extends Activity { private static final String TAG = "ThreadDemo"; private int count = 0; private Handler mHandler = new Handler(); private Runnable mRunnable = new Runnable() { public void run() { //為了方便 查看,我們用Log打印出來 Log.e(TAG, Thread.currentThread().getName() + " " +count); count++; setTitle("" +count); //每2秒執行一次 mHandler.postDelayed(mRunnable, 2000); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //通過Handler啟動線程 mHandler.post(mRunnable); } @Override protected void onDestroy() { //將線程銷毀掉 mHandler.removeCallbacks(mRunnable); super.onDestroy(); }} ~~~ ? Ok~今天就寫到這里,我午休去也~大家有不明白的可以留言!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看