zoukankan      html  css  js  c++  java
  • Android学习 销毁activity时注意关闭线程

    在Activity开启的子线程并不会自动随Activity的destroy而关闭,所以必须手动去关闭子线程或者通过boolean的方式让子线程结束运行。开启的子线程有for循环的要更加注意。

     1 package com.lsw; 
     2 
     3 import android.app.Activity;  
     4 import android.os.Bundle;  
     5 import android.os.Handler;  
     6 import android.os.Message;
     7 import android.util.Log;  
     8 public class ThreadDemoActivity extends Activity {  
     9     private static final String TAG = "ThreadDemo";  
    10     private int count = 0;  
    11     private Handler mHandler =  new MyHandler();  
    12     boolean stopThread=false;
    13       
    14     private Runnable mRunnable = new Runnable() {
    15           
    16         public void run() {
    17             
    18             while (!stopThread)
    19             {
    20                 count++;  
    21                 try
    22                 {
    23                     Thread.sleep(2000);
    24                 }
    25                 catch (InterruptedException e)
    26                 {
    27                     // TODO Auto-generated catch block
    28                     e.printStackTrace();
    29                 }
    30                 
    31                 //虽然Message的构造函数是public的,但是最好是使用Message.obtain( )或Handler.obtainMessage( )函数来获取Message对象,因为Message的实现中包含了回收再利用的机制,可以提供效率。
    32                 Message message=mHandler.obtainMessage();
    33                 message.what=0;
    34                 message.obj=count;
    35                 mHandler.sendMessage(message);
    36             }
    37         }  
    38     };  
    39     
    40     @Override  
    41     public void onCreate(Bundle savedInstanceState) {  
    42         super.onCreate(savedInstanceState);  
    43         setContentView(R.layout.main);   
    44         //开启子线程
    45         new Thread(mRunnable).start();
    46     }  
    47      
    48     protected void onDestroy() {
    49         System.out.println("-----------onDestroy------");
    50         stopThread=true;
    51         super.onDestroy();
    52     };   
    53     
    54     class MyHandler extends Handler{
    55         
    56         @Override
    57         public void handleMessage(Message msg)
    58         {
    59         // TODO Auto-generated method stub
    60             Log.e(TAG, Thread.currentThread().getName() + " " +msg.obj);  
    61             setTitle("" +msg.obj);  
    62         }
    63     }
    64     
    65 }  
  • 相关阅读:
    Browsersync 浏览器自动刷新
    react学习历程问题记载(二)
    react学习历程问题记载(一)
    LessJs笔记
    toFixed的使用
    react+ts封装AntdUI的日期选择框之月份选择器DatePicker.month
    elementUI实现日期框选中项文本高亮
    react+lib-flexible适配浏览器宽度配置
    vue+lib-flexible实现大小屏幕,超大屏幕的适配展示。
    div+伪元素实现太极图
  • 原文地址:https://www.cnblogs.com/shuaiwen/p/3094768.html
Copyright © 2011-2022 走看看