DrawerLayout
2017-04-13 13:24:24 0 举报
DrawerLayout是一个Android布局组件,它允许用户通过从屏幕左侧或右侧滑动来显示和隐藏一个抽屉式的内容面板。这个面板可以包含各种内容,如菜单、导航选项等。DrawerLayout通常与ActionBarDrawerToggle一起使用,以实现滑动手势的监听和处理。DrawerLayout的主要优点是它可以很好地适应不同的屏幕尺寸和方向,同时保持内容的可见性。这使得DrawerLayout成为许多Android应用程序中常用的布局组件,特别是在需要提供侧边栏导航功能的场景中。总之,DrawerLayout是一个灵活且易于使用的布局组件,可以帮助开发者快速实现抽屉式导航界面。
作者其他创作
大纲/内容
removeDyingProviderLocked移除死亡的 provider
RequestManager
requestTracker : RequestTrackertargetTracker : TargetTrackerglide : Glidelifecycle : LifeCycletreeNode : RequestManagerTreeNode
load(String string) : DrawableTypeRequest
LifecycleListener
onStart()onStop()onDestroy()
要是缓存没有超过 xxx 时间,就把它给我
AMS.publishContentProviders
客户端
installNewPackageLI
SharedBufferServer
触发过程
服务端
Request
begin()
mHandler.removeMessages
serviceTimeout
RequestTracker
requests : SetpendingRequests : List
runRequest
installPackageAsUser
handleReturnCode
第一步:通过静态方法,静态方法中,首先调用 RequestManagerRetriever 的单例方法,再调用它对应的 get 方法,得到一个 RequestManager 对象
GET /index.htmlIf-Modified-Since : Time1
AMS.attachApplicationLocked
ActivityManagerNative.getDefault().serviceDoneExecuting
返回 304
过滤几种特殊情况
scanPackageLI
RequestManagerRetriever
INSTANCE : RequestManagerRetrieverfactory : RequestManagerFactory
+ get() : RequestManagerRetriever+ get(Activity activity) : RequestManager
第三步:调用这个返回的 DrawableTypeRequest 的 into 方法
解除过程
SharedBufferClient
拷贝到临时文件夹中
Engine
load(...)
Target
第五步:执行 request 的 begin 方法
installPackageLI
scheduleServiceTimeoutLocked判断是否是前台服务,通过 sendMessageAtTime 方法,发送消息到 AMS#mHandler 中
handleStartCopy
第四步:构建 Request,并调用 RequestTracket 的 runRequest 方法
Surface
processContentProviderPublishTimedOutLocked
serviceDoneExecutingLocked
Handler.Callback
removeProcessLocked
ActivityThread#handleCreateService
RequestManagerFactory
updateSettingsLI
xxx 时间内就不再向我确认了,你可以直接支配
屏幕
realStartServiceLocked
第六步:执行 Engine 的 load 方法
appNotResponding
通过 OpenGL ES调用 GPU
performReceiveLocked
对传递过来的数据进行光栅化处理
Glide
+ static with(Activity activity) : RequestManager
BroadcastQueue#processNextBroadcast
GET /index.htmlIf-None-Match : a(a 为该资源的 ETag 值)
第二步:调用 load(String url) 方法之后返回一个 DrawableTypeRequest 对象
dexopt
SharedClient
ImageViewTarget
Last-Modified : Time2 (Time2 = Time1)
AMS#mHandler.removeMessages
将 UI 对象处理为多维图形,纹理坐标
内部类,创建 RequestManager
DrawableRequestBuilder
缓存服务器
SharedBufferStack
DrawableTypeRequest
broadcastTimeoutLocked
ViewTarget
request : Request
CPU
GenericRequest
+ begin()+ onSizeReady(...)
Last-Modified : Time2 (Time2 Time1)
源服务器
通知守护进程 installId 进行 dexopt 操作
Intent.ACTION_PACKAGE_ADDED
返回 200
若服务器该资源 ETag 的值等于 a
mHandler#CONTENT_PROVIDER_PUBLISH_TIMEOUT
该资源在 Time 后被修改过
GenericRequestBuilder
+ into(ImageView) : Target+ into(Y target)- buildRequest()
cleanupAppInLaunchingProvidersLocked
setBroadcastTimeoutLocked发送 BROADCAST_TIMEOUT_MSG
startCopy
GPU
缓存过了 xxx 时间还有效吗
cancelBroadcastTimeoutLocked
bumpServiceExecutingLocked
GlideDrawableImageViewTarget
若服务器该资源 ETag 的值不等于 a
签名校验 & 重命名
收藏
收藏
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容