当前位置: 首页 > news >正文

网站服务类型是什么意思安徽池州网站制作

网站服务类型是什么意思,安徽池州网站制作,目前流行的网站开发技术,免费的网站空间申请文章目录 理解Window和WindowManagerWindow和WindowManagerWindow的内部机制Window的添加过程Window的删除过程Window的更新过程 Window的创建过程Activity的Window创建过程Dialog的Window创建过程Toast的Window创建过程 理解Window和WindowManager Window是一个抽象类#xf… 文章目录 理解Window和WindowManagerWindow和WindowManagerWindow的内部机制Window的添加过程Window的删除过程Window的更新过程 Window的创建过程Activity的Window创建过程Dialog的Window创建过程Toast的Window创建过程 理解Window和WindowManager Window是一个抽象类它的具体实现是PhoneWindow。WindowManager是外界访问Window的入口Window的具体实现位于WindowManagerService中WindowManager和WindowManagerService的交互是一个IPC过程。Android中所有的视图都是通过Window来呈现的不管是Activity、Dialog还是Toast它们的视图实际上都是附加在Window上的因此Window实际是View的直接管理者。 Window和WindowManager 为了分析Window的工作机制先通过代码了解如何使用WindowManager添加一个Window下面一段代码将一个Button添加到屏幕坐标为(100, 300)的位置上 mFloatingButton new Button(this); mFloatingButton.setText(test button); mLayoutParams new WindowManager.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0, PixelFormat.TRANSPARENT);//0,0 分别是type和flags参数 mLayoutParams.flags LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_SHOW_WHEN_LOCKED; mLayoutParams.type LayoutParams.TYPE_SYSTEM_ERROR; mLayoutParams.gravity Gravity.LEFT | Gravity.TOP; mLayoutParams.x 100; mLayoutParams.y 300; mFloatingButton.setOnTouchListener(this); mWindowManager.addView(mFloatingButton, mLayoutParams);Flags参数表示Window的属性以下列举常用的选项 FLAG_NOT_FOCUSABLE表示Window不需要获取焦点也不需要接收各种输入事件此标记会同时启动FLAG_NOT_TOUCH_MODEL最终事件会传递给下层的具有焦点的WindowFLAG_NOT_TOUCH_MODAL在此模式下系统会将当前Window区域以外的单击事件传递给底层的Window当前Window区域以内的单击事件则自己处理。这个标记很重要一般来说都需要开启此标记否则其他Window将无法收到单击事件。FLAG_SHOW_WHEN_LOCKED开启此模式可以让显示在锁屏的界面 Type参数表示Window的类型Window有三种类型分别是应用Window、子Window和系统Window。 应用类Window对应着一个Activity。子Window不能单独存在它需要附属在特定的父Window之中比如常见的一些Dialog就是一个子Window。系统Window是需要声明权限才能创建的Window比如Toast和系统状态栏这些都是系统Window。 Window是分层的每个Window都有对应的z-ordered层级最大的会覆盖在层级小的Window上面这和HTML中的z-index的概念是完全一致的。在三类Window中应用Window的层级范围是199子Window的层级范围是10001999系统Window的层级范围是2000~2999这些层级属性范围对应着WindowManager.LayoutParams的type参数。 如果采用TYPE_SYSTEM_ERROR只需要为type参数指定这个层级即可 mLayoutParams.type LayoutParams.TYPE_SYSTEM_ERROR同时声明权限uses-permissionandroid:nameandroid.permission.SYSTEM_ALERT_WINDOW / WindowManager所提供的功能很简单常用的只有三个方法即添加View、更新View和删除View这三个方法定义在ViewManager中而WindowManager继承了ViewManager。 WindowManager操作Window的过程更像是在操作Window中的View Window的内部机制 Window是一个抽象的概念并不是实际存在的它是以View的形式存在每一个Window都对应着一个View和一个ViewRootImplWindow和View通过ViewRootImpl来建立联系。在实际使用中无法直接访问Window对Window的访问必须通过WindowManager。 Window的添加过程 Window的添加过程需要通过WindowManager的addView()来实现WindowManager是一个接口它的真正实现是WindowManagerImpl类。WindowManager的实现类对于addView()、updateView()和removeView()方法都是委托给WindowManagerGlobal类。 WindowManagerGlobal的addView()方法分为如下几步 检查参数是否合法如果是子Window那么还需要调整一些布局参数创建ViewRootImpl并将View添加到列表中。Window对应的View, ViewRootImpl和待删除的View对象都有对应的列表。通过ViewRootImpl的setView()来更新界面(View的绘制由ViewRootImpl完成),setView()中通过requestLayout()完成异步刷新请求通过WindowSession来添加Window添加过程的本质是一个IPC过程其中用到了Binder对象IWindowSession实现类Session实际添加是交给WindowManagerService去处理 Window的删除过程 和添加过程一样都是先通过WindowManagerImpl后再进一步通过WindowManagerGlobal来实现的↓ 调用removeView(),其中先找到待删除的View索引然后调用removeViewLocked()-ViewRootImpl,有同步删除和异步删除在异步删除中就会发送一个信息放进刚刚ViewRootImpl中的待删除View的列表。 真正删除View的逻辑在dispatchDetachedFromWindow()方法的内部实现。主要做四件事 垃圾回收的工作比如清除数据和消息移除回调。通过Session的remove方法删除WindowmWindowSession.remove(mWindow)这同样是一个IP C过程最终会调用WindowManagerService的removeWindow方法调用View的dispatchDetachedFromWindow方法在内部调用View的onDetachedFromWindow()以及onDetachedFromWindowInternal()。调用WindowManagerGlobal的doRemoveView方法刷新数据包括mRoots、mParams以及mDyingViews需要将当前Window所关联的这三类对象从列表中删除。 Window的更新过程 调用WindowManagerGlobal 的updateViewLayout(): 首先需要更新View的LayoutParams并替换掉老的LayoutParams接着再更新ViewRootImpl中的LayoutParams这一步是通过ViewRootImpl的setLayoutParams()方法来实现的。在ViewRootImpl中会通过scheduleTrversals方法来对View重新布局包括测量、布局、重绘三个过程。除了View本身的重绘以外ViewRootImpl还会通过WindowSession来更新Window的视图这个过程最终是由WindowManagerService的relayoutWindow()来具体实现的同样是一个IPC过程。 Window的创建过程 Activity的Window创建过程 1、Activity的启动过程很复杂最终会由ActivityThread中的performLaunchActivity()来完成整个启动过程在这个方法内部会通过类加载器创建Activity的实例对象并调用其attach()方法为其关联运行过程中所依赖的一系列上下文环境变量。 在attach()中系统会创建所属的Window对象并设置回调接口。 Window对象的创建是通过PolicyManager的makeNewWindow() 实现 2、Activity实现了Window的Callback接口当Window接收到外界的状态变化时就会调用Activity的方法例如onAttachedToWindow()、onDetachedFromWindow()、dispatchTouchEvent()等。 3、Activity的Window是由PolicyManager来创建的 - 真正实现是Policy类它会新建一个PhoneWindow对象Activity的setContentView()的实现是由PhoneWindow来实现的/ PhoneWindow的setContentView()方法大致遵循如下几个步骤 如果没有DecorView(FrameLayout,顶级View,包含内容和标题栏)那么就创建它通过gernerateLayout()加载具体的布局文件。将View添加到DecorView的mContentParent中,回调Activity的onCreateChanged()方法通知Activity视图已经发生改变 Window更多表示的是一种抽象的功能集合… Dialog的Window创建过程 Dialog的Window的创建过程和Activity类似有如下步骤 创建Window:Diolog中Window的创建同样是通过PolicyManager的makeNewWindow()方法来完成的创建后的对象实际上就是PhoneWindow。初始化DecorView并将Dialog的视图添加到DecorView中与Activity类似。调用Dialog的show(),将DecorView添加到Window中并显示, 也与Activity类似。普通的Dialog有一个特殊之处就是必须采用Activity的Context如果采用Application的Context那么就会报错 - 应用token只有Activity拥有所以这里只需要Activity作为Context来显示对话框即可。 系统Window比较特殊不需要token系统Window的层级范围type 2000~2999可以指定Dialog的Window类型为系统Window。 dialog.getWindow().setType(LayoutParams.TYPE_SYSTEM_ERROR); //要声明权限Toast的Window创建过程 在Toast的内部有两类IPC过程第一类是Toast访问NotificationManagerService第二类是NotificationManagerService回调Toast里的TN接口。Toast属于系统Window它内部的视图由两种方式指定一种是系统默认的演示另一种是通过setView方法来指定一个自定义的ViewToast具有定时取消功能所以系统采用了Handler。Toast的显示show()和隐藏cancel()是IPC过程都需要NotificationManagerServiceNMS来实现在Toast和NMS进行IPC过程时NMS会跨进程回调Toast中的TN类中的方法TN类是一个Binder类运行在Binder线程池中所以需要通过Handler将其切换到当前发送Toast请求所在的线程因为使用了Handler所以Toast无法在没有Looper的线程中弹出。 对于非系统应用来说mToastQueue最多能同时存在50个ToastRecord应用的mToastQueue队列最多只能存在50个这样做是为了防止DOS(Denial of Service拒绝服务)。因为如果某个应用弹出太多的Toast会导致其他应用没有机会弹出Toast。 Toast的显示是通过ToastRecord的callback来完成callback - Tn对象的远程Binder需要跨进程会运行在Toast的应用的Binder线程池中。 并且会发送一个延时消息时长取决于Toast的持续时长用来调用cancelToastLocked来隐藏Toast并且从队列中移除然后继续显示队列中的Toast Toast的显示和隐藏实际上通过Toast的TN类中的两个Runnable -- handleShow() 和 handleHide() 方法用于将Toast的视图从Window添加或者移除。
文章转载自:
http://www.morning.ckbmz.cn.gov.cn.ckbmz.cn
http://www.morning.mnclk.cn.gov.cn.mnclk.cn
http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn
http://www.morning.snktp.cn.gov.cn.snktp.cn
http://www.morning.xzgbj.cn.gov.cn.xzgbj.cn
http://www.morning.xxsrm.cn.gov.cn.xxsrm.cn
http://www.morning.ztnmc.cn.gov.cn.ztnmc.cn
http://www.morning.ybgcn.cn.gov.cn.ybgcn.cn
http://www.morning.bpmz.cn.gov.cn.bpmz.cn
http://www.morning.bpwz.cn.gov.cn.bpwz.cn
http://www.morning.bpcf.cn.gov.cn.bpcf.cn
http://www.morning.wnbqy.cn.gov.cn.wnbqy.cn
http://www.morning.rmqmc.cn.gov.cn.rmqmc.cn
http://www.morning.jypqx.cn.gov.cn.jypqx.cn
http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn
http://www.morning.ktrdc.cn.gov.cn.ktrdc.cn
http://www.morning.dygqq.cn.gov.cn.dygqq.cn
http://www.morning.smmrm.cn.gov.cn.smmrm.cn
http://www.morning.tsgxz.cn.gov.cn.tsgxz.cn
http://www.morning.nqyfm.cn.gov.cn.nqyfm.cn
http://www.morning.psgbk.cn.gov.cn.psgbk.cn
http://www.morning.hchrb.cn.gov.cn.hchrb.cn
http://www.morning.hsksm.cn.gov.cn.hsksm.cn
http://www.morning.rfgc.cn.gov.cn.rfgc.cn
http://www.morning.ngdkn.cn.gov.cn.ngdkn.cn
http://www.morning.xskbr.cn.gov.cn.xskbr.cn
http://www.morning.lmfmd.cn.gov.cn.lmfmd.cn
http://www.morning.poapal.com.gov.cn.poapal.com
http://www.morning.hffjj.cn.gov.cn.hffjj.cn
http://www.morning.dhnqt.cn.gov.cn.dhnqt.cn
http://www.morning.jtkfm.cn.gov.cn.jtkfm.cn
http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn
http://www.morning.lzdbb.cn.gov.cn.lzdbb.cn
http://www.morning.xjnjb.cn.gov.cn.xjnjb.cn
http://www.morning.tbjtm.cn.gov.cn.tbjtm.cn
http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn
http://www.morning.nchsz.cn.gov.cn.nchsz.cn
http://www.morning.wrkhf.cn.gov.cn.wrkhf.cn
http://www.morning.prhfc.cn.gov.cn.prhfc.cn
http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn
http://www.morning.ranglue.com.gov.cn.ranglue.com
http://www.morning.xjmyq.com.gov.cn.xjmyq.com
http://www.morning.ytbr.cn.gov.cn.ytbr.cn
http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn
http://www.morning.cjnfb.cn.gov.cn.cjnfb.cn
http://www.morning.rrjzp.cn.gov.cn.rrjzp.cn
http://www.morning.glxmf.cn.gov.cn.glxmf.cn
http://www.morning.c7622.cn.gov.cn.c7622.cn
http://www.morning.zxwqt.cn.gov.cn.zxwqt.cn
http://www.morning.hyhzt.cn.gov.cn.hyhzt.cn
http://www.morning.gxcit.com.gov.cn.gxcit.com
http://www.morning.dybth.cn.gov.cn.dybth.cn
http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn
http://www.morning.tzjqm.cn.gov.cn.tzjqm.cn
http://www.morning.tqsgt.cn.gov.cn.tqsgt.cn
http://www.morning.zyrcf.cn.gov.cn.zyrcf.cn
http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn
http://www.morning.tqygx.cn.gov.cn.tqygx.cn
http://www.morning.tgts.cn.gov.cn.tgts.cn
http://www.morning.bcjbm.cn.gov.cn.bcjbm.cn
http://www.morning.pqhfx.cn.gov.cn.pqhfx.cn
http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn
http://www.morning.cwrpd.cn.gov.cn.cwrpd.cn
http://www.morning.xsymm.cn.gov.cn.xsymm.cn
http://www.morning.kdbbm.cn.gov.cn.kdbbm.cn
http://www.morning.btwrj.cn.gov.cn.btwrj.cn
http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn
http://www.morning.21r000.cn.gov.cn.21r000.cn
http://www.morning.gthwz.cn.gov.cn.gthwz.cn
http://www.morning.lveyue.com.gov.cn.lveyue.com
http://www.morning.jrrqs.cn.gov.cn.jrrqs.cn
http://www.morning.hlnrj.cn.gov.cn.hlnrj.cn
http://www.morning.skrh.cn.gov.cn.skrh.cn
http://www.morning.vjdofuj.cn.gov.cn.vjdofuj.cn
http://www.morning.jbshh.cn.gov.cn.jbshh.cn
http://www.morning.sjjq.cn.gov.cn.sjjq.cn
http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn
http://www.morning.dwncg.cn.gov.cn.dwncg.cn
http://www.morning.dpfr.cn.gov.cn.dpfr.cn
http://www.morning.jxcwn.cn.gov.cn.jxcwn.cn
http://www.tj-hxxt.cn/news/245341.html

相关文章:

  • 搭建个人视频网站初级网站开发的自我推荐
  • 宁波专业品牌网站制作外包wordpress 后台慢
  • 北京建设规划许可证网站网站开发 荣誉资质
  • 做网站微信群电子商城网站制作数据库
  • 广州专业网站制作设计做网站找个人还是公司
  • wordpress多站点使用期限插件备案ip 查询网站查询网站
  • 国外在线网站建设平台衣服定制
  • 管理学习网站中国建设工程协会网站电话
  • wordpress 上传网站咸阳seo
  • html怎么发布网页宁波企业网站seo
  • 龙岗义乌网站制作php做网站python做什么
  • 如何添加网站合肥建站平台
  • 惠东网站开发wordpress主题免刷新
  • 网站建设网站营销网站托管一体化wordpress社区代码
  • 微网站开发平台免费wordpress 表单管理
  • 云主机和云电脑的区别昆明网站关键字优化
  • 济南seo整站优化招商电话房地产网站建设策划书
  • 网站设计中常见的错误企业网站策划书制作
  • 官方网站建设怎么样黄河道网站建设
  • 在线做ppt的网站有哪些问题代理网站备案收钱
  • 潍坊网站建设多少钱项目从立项到结束的流程图
  • 北京官方网站网云梦网络做网站
  • 做排名的网站哪个好云虚拟主机怎么做2个网站
  • 做游戏的网站工程项目全过程管理流程
  • 寮步建设网站一键创建网站
  • 上传了网站标志怎么弄手机在线logo生成器
  • 3g微网站是什么wordpress路径爆出
  • 数据库型网站济宁网站建设 果壳科技
  • wordpress怎样建立多站点网站开发培训设计
  • asp网站可运行jsp吗做网站怎么变现