当前位置:   article > 正文

Android Developers:指定在线程中运行的代码

andoird 如何在指定线程中执行

这个课程向你展示如何实现一个Runnalbe类,它在一个单独的线程中运行它的Runnable.run()方法中的代码。你也能传递一个Runnable给其它的对象,然后将它连接到一个线程并且运行它。一个或者多个执行一个特殊操作的Runnable对象在某些时候被称之为一个任务。

Thread和Runnabl都是基础类,凭借它们自己,只有有限的能力。相反,它们是强大的Android类的基础,如HandlerThread,AsyncTask,和IntentService.Thread和Runnable也是ThreadPollExecutor类的基础。这节类自动管理线程和任务队列,也可以并行运行多个线程。

定义一个实现Runnable的类

————————————————————————————————————————————————————————————————

实现一个实现了Runnalbe的类是简单的。例如

  1. public class PhotoDecodeRunnable implements Runnable {
  2. ...
  3. @Override
  4. public void run() {
  5. /*
  6. * Code you want to run on the thread goes here
  7. */
  8. ...
  9. }
  10. ...
  11. }
实现run()方法

————————————————————————————————————————————————————————————————

在这个类中,Runnable.run()方法包含被执行的代码。通常,任何事情都被允许在一个Runnable中。记住,这个Runnable没有运行在这个UI线程中,所以它不能直接修改UI线程对象,如View对象。为了和UI线程通信,你必须使用在Communicate with the UIThread课程中被描述的技术

在run()方法的开始,通过使用THREAD_PRIORITY_BACKGROUND调用Process.setThreadPriority()方法来设置线程使用的后台优先级。这个方式降低了在Runnable对象的线程和UI线程之间的资源竞争

你也应该在这个Runnable自己中保存一个Runnable对象的线程的引用,通过调用Thead.currentThread()方法

下面的代码片段展示了如何设置这个run()方法

  1. class PhotoDecodeRunnable implements Runnable {
  2. ...
  3. /*
  4. * Defines the code to run for this task.
  5. */
  6. @Override
  7. public void run() {
  8. // Moves the current Thread into the background
  9. android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND);
  10. ...
  11. /*
  12. * Stores the current Thread in the the PhotoTask instance,
  13. * so that the instance
  14. * can interrupt the Thread.
  15. */
  16. mPhotoTask.setImageDecodeThread(Thread.currentThread());
  17. ...
  18. }
  19. ...
  20. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/251033
推荐阅读
相关标签
  

闽ICP备14008679号