关闭

requestLayout,invalidate,postinvalidate,View ViewGroup Widget LinearLayout

362人阅读 评论(0) 收藏 举报
分类:

View.requestLayout() 请求重新布局 View.invalidate() 刷新视图,相当于调用View.onDraw()方法。
Handler异步实现的原理和适用的优缺点
   在Handler 异步实现时,涉及到Handler, Looper, Message,Thread四个对象,实现异步的流程是主线程启动Thread(子线程)thread(子线程)运行并生成Message-Looper获取Message并传递给HandleràHandler逐个获取Looper中的Message,并进行UI变更。

(1)、AsyncTask是封装好的线程池,比起Thread+Handler的方式,AsyncTask在操作UI线程上更方便,因为onPreExecute()、onPostExecute()及更新UI方法onProgressUpdate()均运行在主线程中,这样就不用Handler发消息处理了;
(2)、我不太同意封装好就会影响性能的说法,在我实际的运用中,真正的缺点来自于AsyncTask的全局线程池只有5个工作线程,也就是说,一个APP如果运用AsyncTask技术来执行线程,那么同一时间最多只能有5个线程同时运行,其他线程将被阻塞(注:不运用AsyncTask执行的线程,也就是自己new出来的线程不受此限制),所以AsyncTask不要用于多线程取网络数据,因为很可能这样会产生阻塞,从而降低效率。

能否同时并发100+asynctask呢?
      AsyncTask用的是线程池机制,容量是128,最多同时运行5个core线程,剩下的排队。

invalidate()是用来刷新View的,必须是在UI线程中进行工作。比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面。invalidate()的调用是把之前的旧的view从主UI线程队列中pop掉。

Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。 
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。 

  Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

入门级的基础知识,以前对View,VIewGroup,widget,layout等的关系搞不清楚,通过学习后,做了下总结,如下:

1.View,ViewGroup

>View:

}1、所有高级UI组件都继承View类而实现的
}2、一个View在屏幕上占据一块矩形区域
}3、 负责渲染
}4、负责处理发生的事件
}5、设置是否可见
}6、设置是否可以获得焦点等
 
2.ViewGroup:
}1、一个ViewGroup对象是一Android.view.ViewGroup实例
}2、View的容器
}3、 负责对添加进ViewGroup的View进行布局
}4、一个ViewGroup可以加入到另一个ViewGroup
 
3.View ,ViewGroup的关系
 

4.View,widgetView的继承关系

2.widget

}1、界面中展示的各个小组件
}2、有独立的事件处理能力
}3、所有Wiget组件都是继承View而来
注:1.widget并不是实际存在的类,它是一个包,而VIew等就是实际存在的类,所以首字母大写。在引用时,通常:

          import android.view.View;

          import android.widget.TextView;

         因为widget是包,所以首字母小写

        2.在该包内放的是UI Elements,包括TextView,ListView,但是这些元素都继承自View或ViewGroup。如下图所示:

 

 

 

其中各种layout继承自ViewGroup

4 layout

对UI 组件进行布局

 关于view及其子类的关系如下:


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:401704次
    • 积分:7636
    • 等级:
    • 排名:第2788名
    • 原创:132篇
    • 转载:442篇
    • 译文:181篇
    • 评论:20条
    最新评论