Android AsyncLayoutInflater异步加载xml布局文件,Kotlin

打印 上一主题 下一主题

主题 902|帖子 902|积分 2706

Android AsyncLayoutInflater异步加载xml布局文件,Kotlin

 

 
  1. implementation "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01"
复制代码
 
 
  1. import android.os.Bundle
  2. import android.util.Log
  3. import android.view.View
  4. import android.view.ViewGroup
  5. import androidx.appcompat.app.AppCompatActivity
  6. import androidx.asynclayoutinflater.view.AsyncLayoutInflater
  7. class MyActivity : AppCompatActivity() {
  8.     companion object {
  9.         const val TAG = "fly/MyActivity"
  10.     }
  11.     override fun onCreate(savedInstanceState: Bundle?) {
  12.         super.onCreate(savedInstanceState)
  13.         Log.d(TAG, "onCreate开始...")
  14.         AsyncLayoutInflater(this).inflate(R.layout.activity_my, null, object : AsyncLayoutInflater.OnInflateFinishedListener {
  15.             override fun onInflateFinished(view: View, resid: Int, parent: ViewGroup?) {
  16.                 Log.d(TAG, "onInflateFinished")
  17.                 setContentView(view)
  18.             }
  19.         })
  20.         Log.d(TAG, "onCreate结束")
  21.     }
  22. }
复制代码
 
 
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     android:orientation="vertical">
  6.     <TextView
  7.         android:layout_width="match_parent"
  8.         android:layout_height="wrap_content"
  9.         android:text="hello,world!" />
  10.     <com.appdemo.MyLongTimeView
  11.         android:layout_width="match_parent"
  12.         android:layout_height="match_parent"
  13.         android:scaleType="centerCrop"
  14.         android:src="@mipmap/image" />
  15. </LinearLayout>
复制代码
 
 
  1. import android.content.Context
  2. import android.util.AttributeSet
  3. import android.util.Log
  4. import androidx.appcompat.widget.AppCompatImageView
  5. class MyLongTimeView : AppCompatImageView {
  6.     companion object {
  7.         const val TAG = "fly/MyLongTimeView"
  8.     }
  9.     constructor(ctx: Context, attribute: AttributeSet) : super(ctx, attribute) {
  10.         Log.d(TAG, "开始sleep...")
  11.         Thread.sleep(6000)
  12.         Log.d(TAG, "sleep结束")
  13.     }
  14. }
复制代码
 
 
 
Android ViewStub延迟初始化加载布局View,Kotlin-CSDN博客文章欣赏阅读274次。CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有竣事,则等候GPU渲染竣事,GPU竣事后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。而对SF来说,只要有合成任务,它就得再去申请VSYNC-sf。
https://blog.csdn.net/zhangphil/article/details/145861445
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表