Android并发处理最佳做法

Android并发处理最佳做法

      几乎所有的Android开发人员都必须处理并发代码。要做到这一点很难、很苛刻,并且很容易出错。支持这项工作的工具知道合格线而已。

      可以使用一些最佳做法让代码更健壮,更不易受到奇怪且难以诊断的错误的影响。

 

      1、不可变对象是简单且线程安全的。虽然一些开发人员发现集群很讨厌,但用final修饰符明确每个可能的值从而使代码更容易管理。使用Builder模式是创建不可改变对象的这一种好办法。

      2、在单线程(不管是什么线程)上运行的代码很容易理解。如果需要多线程,就要尽量使它保持住。将它隐藏在框架中,这样大多数开发人员不需要意识到它。

      3、作为上一点的推论,尝试让Java类和源代码成为单线程的。太大而不适合放入一个编辑器屏幕的源文件,以及包含在不同线程上运行方法的源文件是肯定会发生意外的。

      4、如果必须让一个类的方法在多个线程上执行,那么就要注解或注释这些方法。代码本身并不会表明线程策略。经常听到的接口:“  代码就是注释 ”  并不适合多线程代码。

      5、非常仔细的检查多线程代码。小心谨慎往往能发现精心计划并良好之星的设计中有微小的疏忽。

      6、使用静态分析。将工具上的报告标准设置得尽可能最低,并且花时间了解他报告的每个异常。在可能时使用多个工具。注解!

      7、将尽可能多的代码移出Activity(和段)。Activity是页面的管理器。它不应该包含业务逻辑。

      8、从Android组件中获取尽可能多的代码。使用一种现在UI模式(MVVM,MVP)从Activity中获取显示逻辑。将你的Service保留为工厂,并通过手工或者使用IoC(控制反转,Inversion of Control)框架注入实现中。这样测试要容易得多。

 

      为长时间运行的任务创建一些简单清晰的执行策略,然后始终如一地使用他们。在可能的情况下,使用运行时断言以验证他们。让遵循这架构变得简单并且成为习惯。

      祝你好运。

 

本文摘自《Android并发 开发》第八章 8.4 结束语和最佳做法

实际开发中有很多并发的情况,书到用时方恨少,纸上得来终觉浅。希望对你有所帮助,正如文末,祝你好远!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115022.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PDB 文件

    PDB 文件PDB文件什么是PDB文件PDB(ProgramDataBase)即程序的基本数据,是VS编译链接时生成的文件,每个程序集(EXE或DLL)都有一个与之对应的PDB文件。DPB文件主要存储了VS调试程序时所需要的基本信息,主要包括源文件名、变量名、函数名、对应的行号等等。因为存储的是调试信息,所以一般情况下PDB文件是在Debug模式下才会生成。…

    2022年6月2日
    94
  • 邮件编辑指南

    邮件编辑指南

    2021年7月3日
    73
  • idea2021最新激活码(最新序列号破解)「建议收藏」

    idea2021最新激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    707
  • 关于AxisFault的说明[通俗易懂]

    关于AxisFault的说明[通俗易懂]copyfrom:http://tenn.iteye.com/blog/94324一般说来,不可避免的WebService的服务中也会出现异常,举个简单的例子,一个服务接受一个SOAP请求消息,获取有效负载后,进行一个数据库更新操作,而在更新操作过程中发生了SQLException,这个时候就需要告诉客户端(调用WebService)出现异常了,Axis2将异常封装成为一个Axis…

    2025年11月9日
    3
  • pytorch 自定义卷积核进行卷积操作[通俗易懂]

    pytorch 自定义卷积核进行卷积操作[通俗易懂]一卷积操作:在pytorch搭建起网络时,大家通常都使用已有的框架进行训练,在网络中使用最多就是卷积操作,最熟悉不过的就是torch.nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)通过上面的输入发现想自定义自己的卷积核,比如高斯…

    2022年5月28日
    44
  • maven打包时跳过测试「建议收藏」

    maven打包时跳过测试「建议收藏」开发记录有一个maven项目,我clone一下最新的代码。准备打包(mavenpackage),没想到在执行到TEST阶段报错。百思不得其解,决定跳过测试去打包,然后部署。Failedtoexecutegoalorg.apache.maven.plugins:maven-surefire-plugin:2.12.4:test在运行mvninstall或mvnpackag…

    2022年6月9日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号