Android的ConditionVariable学习

  线程操作经常用到wait和notify,用起来稍显繁琐,而Android给我们封装好了一个ConditionVariable类,用于线程同步。提供了三个方法block()、open()、close()。

  void block()
阻塞当前线程,直到条件为open
  void block(long timeout)
阻塞当前线程,直到条件为open或超时
  void open()
释放所有阻塞的线程
  void close()
将条件重置为close

实际项目中的使用:

mCondition 是一个ConditionVariable

refreshNotification()方法改变通知的图片和文本

 

/**
  * 通知栏下载图标匿名线程控制
  */
 private Runnable mTask = new Runnable() {
  public void run() {
   long blockTime = 150;
   long beginend = 120;
   while (!isComplete) {// 未下载完成则刷新通知
    /* 下载图标的动态控制 */
    refreshNotification(R.drawable.stat_sys_download_anim1);
    if (mCondition.block(beginend) && !isComplete)
     break;
    refreshNotification(R.drawable.stat_sys_download_anim2);
    if (mCondition.block(blockTime) && !isComplete)
     break;
    refreshNotification(R.drawable.stat_sys_download_anim3);
    if (mCondition.block(blockTime) && !isComplete)
     break;
    refreshNotification(R.drawable.stat_sys_download_anim4);
    if (mCondition.block(blockTime) && !isComplete)
     break;
    refreshNotification(R.drawable.stat_sys_download_anim5);
    if (mCondition.block(blockTime) && !isComplete)
     break;
    refreshNotification(R.drawable.stat_sys_download_anim0);
    if (mCondition.block(beginend) && !isComplete)
     break;
   }
  }
 };

 

posted @ 2012-06-13 09:17  Liu Siyuan  阅读(1408)  评论(0编辑  收藏  举报