欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中实现Runnable接口简单例子

程序员文章站 2024-01-29 12:49:58
本课讲的是如何实现一个runnable,在一个独立线程上运行runnable.run()方法.runnable对象执行特别操作有时叫作任务。 thread和runnabl...

本课讲的是如何实现一个runnable,在一个独立线程上运行runnable.run()方法.runnable对象执行特别操作有时叫作任务。
thread和runnable都是基础的类,靠他们自己,能力有限。作为替代,android有强大的基础类,像handlerthread,asynctask,intentservice。thread和runnable也是threadpoolexecutor的基础类。这个类可以自动管理线程和任务队列,甚至可以并行执行多线程。

定义一个实现runnable接口的类

复制代码 代码如下:

public class photodecoderunnable implements runnable {
    ...
    @override
    public void run() {
        /*
         * code you want to run on the thread goes here
         */
        ...
    }
    ...
}

实现run()方法

runnable.run()方法包含了要执行的代码。通常,runnable里可以放任何东西。记住,runnable不会在ui运行,所以不能直接修改ui对象属性。与ui通讯,参考communicate with the ui thread
在run()方法的开始,调用 android.os.process.setthreadpriority(android.os.process.thread_priority_background);设置线程的权重,android.os.process.thread_priority_background比默认的权重要低,所以资源会优先分配给其他线程(ui线程)
你应该保存线程对象的引用,通过调用 thread.currentthread()

复制代码 代码如下:

class photodecoderunnable implements runnable {
...
    /*
     * defines the code to run for this task.
     */
    @override
    public void run() {
        // moves the current thread into the background
        android.os.process.setthreadpriority(android.os.process.thread_priority_background);
        ...
        /*
         * stores the current thread in the phototask instance,
         * so that the instance
         * can interrupt the thread.
         */
        mphototask.setimagedecodethread(thread.currentthread());
        ...
    }
...
}

上一篇: css之浮动

下一篇: CSS浮动