精华内容
下载资源
问答
  • android 创建子线程

    千次阅读 2017-01-13 18:04:28
    android 创建子线程 1.创建子线程并启动 private Thread newThread; //声明子线程 new Thread()  { public void run()  {  //要做的工作 } }.start(); 2.先建子线程,后启动 private Thread newThread...
    android 创建子线程
    
    1.创建子线程并启动
    private Thread newThread;         //声明子线程
    new Thread() 
    {
    public void run() 
    {
          //要做的工作
    }
    }.start();
    2.先建子线程,后启动
    private Thread newThread; //声明子线程
    newThread = new Thread(new Runnable() 
    {
        @Override
        public void run() 
    {
                //这里写入子线程需要做的工作
            }
    });
    newThread.start(); //启动线程
    展开全文
  • Android创建子线程的几种方法

    千次阅读 2020-05-08 15:00:05
    1.新建一个类继承自Thread,并重写run()方法,并在里面编写耗时逻辑。 class ThreadTest extends Thread { @Override public void run() { //具体的耗时逻辑代码 } } new ThreadTest()....//启动线程 2....

    1.新建一个类继承自Thread,并重写run()方法,并在里面编写耗时逻辑。

    	class ThreadTest extends Thread {
            @Override
            public void run() {
                //具体的耗时逻辑代码
            }
        }
        new ThreadTest().start();//启动线程
    

    2.实现Runnable接口。

    	class ThreadTest implements Runnable {
            @Override
            public void run() {
                //具体耗时逻辑
            }
        }
        ThreadTest threadTest = new ThreadTest();
        new Thread(threadTest).start();//启动线程
    

    3.使用匿名内部类。

         new Thread(new Runnable() {
                @Override
                public void run() {
    				//耗时逻辑
                }
            }).start();//启动线程
    

    总结

    使用继承的方式耦合性有点高,更多的时候我们选择实现Runnable接口来创建一个线程,使用匿名内部类的写法更为常见。

    展开全文
  • 1.新建一个类继承自Thread,并重写run()方法,并在里面编写耗时逻辑。 class ThreadTest extends Thread { @Override ...//启动线程 2.实现Runnable接口。 class ThreadTest implements Runnable {

    1.新建一个类继承自Thread,并重写run()方法,并在里面编写耗时逻辑。

    	class ThreadTest extends Thread {
            @Override
            public void run() {
                //具体的耗时逻辑代码
            }
        }
        new ThreadTest().start();//启动线程
    
    

    2.实现Runnable接口。

    	class ThreadTest implements Runnable {
            @Override
            public void run() {
                //具体耗时逻辑
            }
        }
        ThreadTest threadTest = new ThreadTest();
        new Thread(threadTest).start();//启动线程
    
    

    3.使用匿名内部类。

         new Thread(new Runnable() {
                @Override
                public void run() {
    				//耗时逻辑
                }
            }).start();//启动线程
    
    

    总结:使用继承的方式耦合性有点高,更多的时候选择实现Runnable接口来创建一个线程,但是使用匿名内部类的写法更为常见。

    展开全文
  • 一. 创建子线程 //通过继承thread public class JNThread1 extends Thread { public JNThread1(String name){ super(name); } @Override public void run() { ...
    一. 创建子线程
    
       //通过继承thread
        public class JNThread1 extends Thread {
            public JNThread1(String name){
                super(name);
            }
    
            @Override
            public void run() {
                Message msg = new Message();
                msg.obj = "I am a message!";
                mHandler.sendMessage(msg);
            }
        }
    
        //通过实现Runnable接口来创建子线程
        public class JNThread2 implements Runnable{
            public void run() {
    
            }
        }
    
         JNThread1 thread = new JNThread1("jiang");
            thread.start();
    1
    2
    二. 子线程回调主线程的方式
    
    1.view.post(Runnable action)
    
    这是我认为最简单的方法了,比如你在子线程获得了多个数据,需要更新textview显示这些数据,可以这样做
    
    textView.post(new Runnable() { 
        @Override public void run() { 
            textView.setText("更新啦!"); 
            //还可以更新其他的控件
         }
    });
    
    这是view自带的方法,比较简单,如果你的子线程里可以得到要更新的view的话,可以用此方法进行更新。
    
    view还有一个方法view.postDelayed(Runnable action, long delayMillis)用来延迟发送。
    
    2,activity.runOnUiThread(Runnable action)
    
    这是我认为第二简单的方法了,一般我的上下文(context)是大部分类都会传到的,而这个 context 其实就是我的 MainActivity,我会直接强制转换成 Activity 然后用activity.runOnUiThread(Runnable action)方法进行更新UI
    
     /** * 假设该更新方法在子线程中运行 * @param context 上下文 * / 
    public void update(final Context context) { 
    ((MainActivity) context).runOnUiThread(new Runnable() {
                 @Override public void run() { 
                 //已在主线程中,可以更新UI
     } 
    }
    
    如果没有上下文(context)怎么办?
    
    用view.getContext()可以得到上下文(不过你为什么不直接用方法一呢?) 
    跳过context直接用new Activity().runOnUiThread(Runnable action)来切换到主线程。
    
    重点内容
    
    3,Handler
    
    Handler 是最常用也是比上面稍微复杂一点的方法。
    
    首先在主线程中定义Handler,Handler mainHandler = new Handler();(必须要在主线程中定义才能操作主线程,如果想在其他地方定义声明时要这样写Handler mainHandler = new Handler(Looper.getMainLooper()),来获取主线程的 Looper 和 Queue ) 
    获取到 Handler 后就很简单了,用handler.post(Runnable r)方法把消息处理放在该 handler 依附的消息队列中(也就是主线程消息队列),这也是为什么我们第一步一定要获取主线程的 handler,如果在子线程中直接声明 handler,调用handler.post(Runnable r)其实还是在子线程中调用
    
    /
    
    /假设已在子线程 Handler mainHandler = new Handler(Looper.getMainLooper()); 
    mainHandler.post(new Runnable() { 
        @Override public void run() { 
        //已在主线程中,可以更新UI 
        } 
    });
    
    其实一般 Handler 是和 Message 一起使用的。
    
     //假设在主线程中 Handler myHandler = new Handler() {
          @Override public void handleMessage(Message msg) { 
          switch(msg.what) { 
          case 0: //xxx操作 
          case 1: //yyy操作 
          break; 
          default: 
          break; 
        } 
     }
    
    之后可以把 mainHandler 当做参数传递在各个类之间,当需要更新UI时,可以调用sendMessage一系列方法来执行handleMessage里的操作。
    
    //假设现在在子线程了 
    //获取消息 
    Message msg = myHandler.obtainMessage(); msg.what = 0; 
    //消息标识 
    //msg.obj 用来提供额外对象参数 
    //发送消息 
    myHandler.sendMessage(msg);
    
    如上代码,只是发送了个消息标识,并没有传其他参数(可以用msg.arg1 
    和 msg.arg2 
    用来提供额外int型参数,用msg.obj 
    用来提供额外对象参数),可以用简化方法sendEmptyMessage(int what) 
    来减少不必要的代码
    
    myHandler.sendEmptyMessage(0); //其实内部实现还是和上面一样
    
    sendEmptyMessageAtTime(int what, long uptimeMillis); //定时发送消息
    sendEmptyMessageDelayed(int what, long delayMillis); //延时发送空消息
    sendMessageAtFrontOfQueue(Message msg); //最先处理消息(慎用)
    sendMessageAtTime(Message msg, long uptimeMillis); //定时发送消息
    sendMessageDelayed(Message msg, long delayMillis); //延时发送消息
    --------------------- 
    原文:https://blog.csdn.net/zixiweimi/article/details/53164707 

     

     

     

    展开全文
  • 第一步:创建Native C++项目 第二步:创建完成后,加载NDK 第三步:编写界面 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app=...
  •  Java提供了线程类...其实,创建线程创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法:  ◆需要从Java.lang.
  • Handler之创建子线程Handler Android的消息机制实现步骤: ①创建当前线程的looper ②创建当前线程的handler ③调用当前线程looper的loop方法 要实现创建子线程Handler,按常理应该如此 public class ...
  • android 子线程中创建子线程

    千次阅读 2018-01-25 15:37:20
    子线程中创建子线程方法: //创建第一个子线程 notifyingThread = new Thread(null, mTask, "子线程1"); notifyingThread.start(); private Runnable mTask = new Runnable() { public void run() {
  • 主要介绍了Android App在线程创建handler的方法讲解,文中同时讲解了handler和线程的关系以及使用Handler时一些需要注意的地方,需要的朋友可以参考下
  • 获取主线程的looper,或者说是UI线程的looper new Thread(new Runnable() { public void run() { Handler handler = new Handler(Looper.getMainLooper()){ // 区别在这!!!! @Override public...
  • Android 子线程创建handler

    千次阅读 2017-12-24 22:55:05
    据上篇我转载的 Handler,Looper, Message 三者关系深入消化,理解后。...但是有人会疑问,那子线程中是否可以创建一个Handler,仅仅通知线程呢? 答案是肯定的。 直接上代码。 new Thread(new Runnable() {
  • 简单的demo,对应的我博客地址是:http://blog.csdn.net/u012320459/article/details/47271319
  • Android主线程发消息给子线程

    千次阅读 2017-05-15 18:33:59
    我们平时,是从子线程向主线程发消息,而主线程默认已经帮我们完成了Looper的操作,所以我们只需要简单的“创建一个Handler对象,然后一个线程发消息,另一个接收消息”…… 我们先说一下这个Looper是神马吧。 它...
  • 下面的一段转载自:http://blog.sina.com.cn/s/blog_71dbc27f01017mnj.html下面是快速创建一个新线程的方法:第一种:直接创建子线程并启动 new Thread() {@Overridepublic ... 第二种:先创建子线程,然后启动 ...
  • Android创建线程的两种方式及比较

    万次阅读 2018-06-05 21:06:43
    一、Android创建线程的方式通常为以下两种:  Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个...
  • 当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Handler对象,就可以通过该对象向父线程的消息队列发送消息了。由于Android要求在UI线程中更新界面,因此,可以通过该方法在其它线程中更新界面。 通过...
  • 创建线程的两种方式 二.启动线程start和run的分析   一.创建线程的两种方式  java提供两种创建线程的方式: 1.继承Thread private void createThread(){  new MyThread().start(); } private class...
  • 为什么在子线程创建handler时会报以下错误 Can’t create handler inside thread that has not called Looper.prepare() 正如我们常常使用Handler从子线程中发送一个消息到UI线程中去修改UI界面,同样...
  • 线程实现的Android访问网络资源,适用于Android4.0以上的Android开发.zip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,440
精华内容 26,176
关键字:

android创建子线程