| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android高级面试题之SDK源码分析:通过线程提升性能,你所不知道的Android原生开发的现状 -> 正文阅读 |
|
[移动开发]Android高级面试题之SDK源码分析:通过线程提升性能,你所不知道的Android原生开发的现状 |
public class MyAsyncTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void… params) {…} @Override protected void onPostExecute(String result) {…} } } 此代码段的缺陷在于,代码会将线程处理对象? 此问题的直接解决方法是将过载的类实例定义为静态类,或在其自己的文件中定义,从而移除隐式引用。 另一个解决方法是将? public class MainActivity extends Activity { // … static public class MyAsyncTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void… params) {…} @Override protected void onPostExecute(String result) {…} } } 线程和应用 Activity 生命周期 应用生命周期会影响线程处理在应用中的工作方式。您可能需要确定线程在 Activity 销毁后应不应该保留。您还应注意线程优先级与 Activity 是在前台运行还是在后台运行之间的关系。 保留线程 线程会在生成这些线程的 Activity 的生命周期过后继续保留。无论是否发生 Activity 创建或销毁事件,线程都会继续不间断地执行。在某些情况下,这种持久性是可取的。 假设某个 Activity 生成了一组线程处理工作块,然后在工作线程能执行工作块之前被销毁。应用应如何处理正在执行的工作块? 如果工作块将要更新不再存在的界面,则该工作不必再继续。例如,如果该工作是从数据库加载用户信息,然后更新视图,则不再需要该线程。 相比之下,工作数据包可能具有某种不完全与界面相关的优势。在这种情况下,您应该保留该线程。例如,数据包可能正在等待下载图片,将其缓存到磁盘并更新关联的? 为所有线程处理对象手动管理生命周期响应可能极其复杂。如果管理不当,应用可能会遇到内存争用和性能问题。您可以结合使用? 线程优先级 应用线程的优先级一定程度上取决于应用处于生命周期的哪个阶段。在应用中创建和管理线程时,请务必设置线程的优先级,以便正确的线程适时获得正确的优先级。如果设置得过高,您的线程可能会干扰界面线程和 RenderThread,导致应用掉帧。如果设置得过低,可能会导致异步任务(例如图片加载)达不到所需的速度。 每次创建线程时,都应调用? 系统还会使用? 默认情况下,系统会将线程的优先级设置为与生成它的线程具有相同的优先级和组成员资格。但是,您的应用可以使用?
应用可以使用? 如需详细了解如何管理线程,请参阅有关?Thread?和?Process类的参考文档。 线程处理的辅助类 框架提供了相同的 Java 类和基元来方便线程处理,例如? AsyncTask 类 对于需要快速将工作从主线程移动到工作线程的应用来说, 在使用? 对于隐式引用问题, HandlerThread 类 虽然? 想一想从您的? 这种情况适合采用处理程序线程:处理程序线程实际上是一个长时间运行的线程,会从队列中抓取工作并对其进行操作。在此示例中,当您的应用将? 当您的应用使用? ThreadPoolExecutor 类 某些类型的工作可以简化为高度并行的分布式任务。例如,为 800 万像素图片的每个 8x8 块计算滤镜就是这样的一个任务。鉴于这会创建大量的工作数据包, Android开发除了flutter还有什么是必须掌握的吗?相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了 除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图; 点击文档前往获取面试资料与视频教程;【阿里P7级别Android架构师技术脑图+全套视频】 5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)** [外链图片转存中…(img-6e8bDlDM-1645101980522)] |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 14:47:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |