`
不夜的星辰
  • 浏览: 88338 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android handler操作线程的两种方式

 
阅读更多
实现了Runnable的线程类:
public class MyRunnable implements Runnable
{

@Override
public void run()
{
  // TODO Auto-generated method stub
   System.out.println("Runnable---The Thread is running");
         System.out.println("Runnable---The Thread id is :"+ Thread.currentThread().getId()+"-"+Thread.currentThread().getName());
         try
  {
   Thread.sleep(6000);
  } catch (InterruptedException e)
  {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

}

}
1.在主线程(UI线程)中执行Runnable
public class HandlerdemoActivity extends Activity {
private Handler handler=new Handler();
private myrunnable runnable=new myrunnable();
        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        handler.post(runnable);
        System.out.println("Oncreate---The Thread id is :"+ Thread.currentThread().getId()+"-"+Thread.currentThread().getName());
        setContentView(R.layout.main);
    }
}
2.在非主线程(子线程)中执行Runnable
public class handlerdemo1 extends Activity
{
private Handler handler = null;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
HandlerThread handlerThread = new HandlerThread("myHandlerThread");
        handlerThread.start();

        handler = new Handler(handlerThread.getLooper());//获取Looper对象的引用

        handler.post(new MyRunnable());

        System.out.println("Oncreate---The Thread id is :"+ Thread.currentThread().getId()+"-"+Thread.currentThread().getName());
        setContentView(R.layout.main);

}
}
分享到:
评论

相关推荐

    android 更新 UI 线程 handler

    此外,`runOnUiThread()`方法也是在非主线程中更新UI的一种常见方式,它更简洁,但实质上也是通过内部的Handler来实现的。例如: ```java new Thread(new Runnable() { @Override public void run() { // 耗时...

    android 多线程 looper handler

    在 Android 中,多线程可以分为两种:有消息循环的线程和没有消息循环的线程。其中,主线程(UI 线程)是一个有消息循环的线程。Looper 是 Android 中的一个新概念,用于实现消息循环机制。 在 Android 中,Looper ...

    Handler与AsyncTask使用示例

    在Android开发中,`Handler`、`AsyncTask`和`Looper`是三个非常重要的概念,它们主要用于处理应用程序的异步操作和线程通信。本文将深入探讨这些知识点,并通过实例来展示它们如何协同工作。 首先,`Handler`是...

    Android线程结束——合理的结束你想结束的线程

    工作线程主要有两种实现方式:Thread和AsyncTask。Thread是Java提供的基础线程类,可以自定义线程执行逻辑;而AsyncTask是Android提供的轻量级异步任务框架,适合短时间、快速的任务,且能方便地与UI进行交互。 ...

    Android(Java)线程的两种实现方式

    本篇文章将深入探讨Android(基于Java)线程的两种主要实现方式:`Thread`类和`Handler-Looper-Messenger`机制。 一、`Thread`类 `Thread`类是Java中的基础线程类,也是Android线程编程的基础。创建一个新的线程...

    android Handler的使用(一)

    创建`Handler`有两种方式: - 直接实例化`Handler`类,如`new Handler()` - 通过匿名内部类实现,重写`handleMessage(Message msg)`方法,提供自定义的消息处理逻辑 2. **发送消息** 使用`Handler`发送消息主要...

    Android 线程+View的使用

    理解这两种方式的关键在于掌握Android的消息机制和线程模型。主线程(也叫UI线程)负责处理用户交互和更新UI,而子线程则用于执行耗时任务。Post方式直接在View上操作,Handler方式通过消息队列进行间接通信。在实际...

    Android HandlerDemo

    就是另一个线程发送一个编号给消息所在的线程,那么该线程的消息处理程序就会收到该消息并进行处理,而消息采用int类型,所以int能够表示多少种数字就以为着有多少消息可以给你使用。这里是一个简单的HandlerDemo。

    Android中handler的使用

    Handler的创建通常有两种方式:匿名内部类和静态内部类。匿名内部类直接在需要使用Handler的地方创建,而静态内部类则需要实现一个静态的成员变量来保存Handler的引用,以避免内存泄漏。 2. **发送消息**: 使用`...

    Android Handler AsyncTask 异步加载

    Handler和AsyncTask是实现异步加载的两种常见方式,除此之外,还可以使用Loader、IntentService、Retrofit+OkHttp等工具或框架。 **对比与选择:** - Handler适合处理周期性的、连续的任务,如定时刷新UI,或者需要...

    android线程和服务两种方式下载,广播通知栏同步更新进度

    本篇将深入探讨如何通过线程和服务两种方式实现网络下载,并利用广播来同步更新进度条和通知栏。这两种方法都是为了优化用户体验,确保用户能够实时了解下载状态。 首先,我们来看线程下载。在Android中,由于主线...

    Android JNI多线程编程回调JAVA函数

    - 在JNI中创建线程通常有两种方式:直接使用C/C++的线程API,如`pthread_create`,或者通过JNI的`CreateJavaVM`和`AttachCurrentThread`接口来操作Java虚拟机的线程。 - 当在本地线程中调用Java对象或方法时,需要...

    Android Handler 原理分析及实例代码

    - **优化性能**:相比使用同步锁,`Handler` 提供了一种更为高效的消息传递方式,避免了线程间的同步开销。 - **异步操作**:`Handler` 可以在不同的线程之间发送和处理消息,实现异步操作,例如在子线程中执行耗时...

    Android App在线程中创建handler的方法讲解

    在Android中,通常有两种线程:主线程(UI线程)和工作线程。主线程主要用于处理用户界面的交互,而工作线程则用于执行耗时操作,以避免阻塞UI。默认情况下,Handler是与主线程的Looper绑定的,但有时我们需要在子...

    深入Android Handler与线程间通信ITC的详解

    值得注意的是,创建Handler有两种方式: - 不指定Looper对象:这种情况下,Handler会自动绑定到创建它的线程,消息处理回调将在该线程执行。例如: ```java private Handler mHandler = new Handler() { public ...

    Android Handler的使用1

    接着,我们讨论了两种基本的消息传递方式。第一种是通过`Message`对象传递,其中`Message.what`用于标识消息类型,`Message.obj`用于存储额外的数据。在`handlerMessage()`函数中,我们创建了一个新的`Message`,...

    线程,线程池与Handler的用法

    线程的开启方式主要有两种:通过`Thread`类直接创建新线程和使用`AsyncTask`。`Thread`类提供了`run()`方法来执行任务,但不推荐直接使用,因为它缺乏对线程管理的优化。相比之下,`AsyncTask`更适合简单的小型异步...

    从现实生活中理解android 线程消息机制

    代码中,我们有两种方式发送Message到Handler:一是通过`handler.obtainMessage()`获取并发送;二是直接创建新的Message实例并使用`handler.sendMessage()`。两种方式都可以,关键在于Handler必须是消息的目标接收者...

    android 实例 Activity 之间通过 Handler 通信

    总结,Handler机制为Android应用提供了一种灵活的跨线程、跨组件通信方式。在Activity之间,通过Handler可以实现异步数据交换和事件触发,为复杂业务场景提供了便利。然而,正确使用Handler并注意其潜在问题,是保证...

    android中的handler的使用方法

    有两种创建方式: - 直接构造Handler,关联到当前线程的Looper。 - 通过`Looper.prepare()`和`Looper.loop()`创建一个新的Looper,然后构造Handler,关联到这个Looper。 2. **发送消息** 使用`sendMessage()`或`...

Global site tag (gtag.js) - Google Analytics