子线程不可以更新UI吗?(2019-11-05)
这里文章基于Android 系统8.0及以上版本分析子线程更新UI并没有报错的原因,其它版本并没有出现这种情况可以参考这篇文章子线程能更新UI吗。经常看到文章说不要在子线程更新UI,不要在UI线程进行耗时操作。偶然间的尝试发现了一些奇怪的问题,先分析第一个问题子线程中可以更新UI吗?下面是我的代码:
这里文章基于Android 系统8.0及以上版本分析子线程更新UI并没有报错的原因,其它版本并没有出现这种情况可以参考这篇文章子线程能更新UI吗。经常看到文章说不要在子线程更新UI,不要在UI线程进行耗时操作。偶然间的尝试发现了一些奇怪的问题,先分析第一个问题子线程中可以更新UI吗?下面是我的代码:
下述代码根据 AppCompatActivity 及主题
parent="Theme.AppCompat.NoActionBar"
和midSdk 21
实现。
代码中设定,需要写在 setContentView() 之前:
1 | // 隐藏标题 |
需要说明一点 requestWindowFeature() 方法是指定主题为 parent="android:Theme.Black"
之类的Activity 时隐藏老式 ActionBar 标题栏内容。对于继承 AppCompatActivity 这个方法无效。如果继承 AppCompatActivity 的 Activity 需要隐藏标题栏,可以通过以下方法:
1 | Request request = new Request.Builder() |
通过Request构建请求体,然后由 client 执行。这里 Request 默认请求类型是Get。注意这个是SynchronousGet是同步执行的。在Android UI线程直接运行会报错提示:==android.os.NetworkOnMainThreadException==。
RenderScript
是Android
平台上简单快速处理图片效果的脚本工具,Renderscript``基于C99(Ed. C 语言)
。使用前需要在Module
下build.gradle
文件中添加两行代码:
1 | defaultConfig { |
谷歌为我们提供了PdfRender工具类对pdf文档进行渲染,首先看一下PdfRender的构造方法:
1 | /** |
可以看构造方法中的参数是ParcelFileDescriptor的一个实例,那么ParcelFileDescriptor类是做什么的呢?ParcelFileDescriptor是Android 提供的一种数据结构,支持数据的写入和写出。我们通过ParcelFileDescriptor#open 建立文件和ParcelFileDescriptor的联系
Update your browser to view this website correctly. Update my browser now