• android中开启线程


    其实Android启动线程和JAVA一样有两种方式,一种是直接Thread类的start方法,也就是一般写一个自己的类来继承Thread类。另外一种方式其实和这个差不多啊! 那就是Runnable接口,然后把Runnable的子类对象传递给Thread类再创建Thread对象.总之都是需要创建Thread对象,然后调用Thread类的start方法启动线程。区别就是,一个是直接创建Thread对象,另外一个是需要implement了Runnable接口对象作为创建Thread对象的参数。Runnable其实我们称为线程任务。
      第一种方式一般是这样用:
    Class MyThread extends Thread{
       public void run(){
       //你要实现的代码   
       }
       }
     在主线程中启动这个线程:
    public class Test{
    public static void main(String[] args){
      new MyThread().start();//启动了我们的线程了
    }
    }
    2,第二种方式一般是这样用:
    public class MyRunnable implements Runnable{
    public void run(){
    //你需要实现的代码
    }
    }
    在主线程中启动这个线程:
    public class Test{
    public static void main(String[] args){
     Thread t=new Thread(new MyRunnable());//这里比第一种创建线程对象多了个任务对象
    t.start();
    }
    }
    3.不知道这个是在没用的,就是看到很多的人在使用,另外handler.removeCallbacks(updateThread);没有效果,百度之后说将ruannable和handler都设置能static,但是我测试还是没有效果
    Thread thread = new Thread(runnable);
                        thread.start();
        Runnable runnable = new Runnable() {
    
            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (true) {
                    
                }
            }
        }; 
    这里我想说的是可能你问这个问题是接触到了Android中的Handler概念:
      其实Handler并不是开辟新线程的概念,Android主要的考虑到更新界面的问题,一般情况下,更新界面(Activity)都是在主线程中更新的,这样就遇到了一个问题,比方说:在下载文件时候我们需要进度条显示下载进度,界面需要更新(数据是不断变的,也就是下载的大小是不断变的,要是直接在主线程中更新,就会造成程序的堵塞,程序很容易崩溃,通常这样联网耗时的工作需要开辟另外一个线程的,这样就不会影响主程序了),好了,到这里联网操作一般都需要开辟新线程了吧。。 
     接下来就来说Handler了,刚刚我说了Handler不是开辟新线程,在我看来,Handler更像是主线程的秘书,是一个触发器,负责管理从子线程中得到更新的数据,然后在主线程中更新界面。简单说下进度条的那个:
      下载了多少的数据都是在子线程中得到的,在子线程中通过Handler的sendMessage()方法发送得到的下载的数据,当你调用了sendMessage方法后,Handler就会回调(也就是自动调用)Handler中的 HandlerMessage方法。

  • 相关阅读:
    ppt中调整图片位置
    如何理解 Google Protocol Buffer
    g++: error: unrecognized command line option ‘-std=C++11’
    手把手教你如何加入到github的开源世界!
    redis
    maven
    Spring----注释----开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别
    JMX学习笔记(一)-MBean
    Redis学习笔记2-redis管道(pipeline)
    Redis学习笔记1-java 使用Redis(jedis)
  • 原文地址:https://www.cnblogs.com/sowhat4999/p/4439865.html
Copyright © 2020-2023  润新知