10种提升android运行效率的建议

 更新时间:2021年11月04日 14:20:20   作者:banq  
这篇文章主要分享提升android运行效率的建议,如何让安卓程序在有限的内存和电池资源下流畅快速有效率的运行,下面给大家分享下面给出了10种实践中的建议,需要的朋友可以参考一下

如何让安卓程序在有限的内存和电池资源下流畅快速有效率的运行,下面给出了10种实践中的建议:

一、有效的线程

1. 如何使用后台线程以避免前台负载过荷?

默认情况下,应用程序的所有操作都是在前台的主线程(UI线程)上运行的,应用程序响应能力可能会受到影响,会导致当机,死机,甚至系统错误。为了提升反应能力,应该将长时间运行的任务(如网络或数据库操作,复杂的计算)搬离应用程序的主线程,切换到以一个单独的后台线程方式运行。

完成这一切换任务的最有效方法是在类级别。您可以使用AsyncTask类或IntentService类​​来组织后台工作。一旦你实现了一个IntentService,它会在需要的时候启动,使用新的一个工作线程处理请求(意图)。

当使用IntentService,你应该考虑以下限制:

  • 这个类没有把结果送给UI,所以为了显示结果,需要使用Activity
  • 一次只有一个请求被处理。
  • 任何请求处理不能中断。

2.如何避免应用不响应ANR?

为了避免应用程序长时间无应答ANR,将长任务操作从UI主线程卸载到后台线程运行,你可以通过继承AsyncTask 和实现 doInBackground() 方式来实现

另外一个方式是创建一个线程或HandlerThread 实现类,值得注意的是,你还需要规定线程的"后台" 线程权限,因为这个新线程缺省权限和UI线程是一样的,同样会拖慢整个应用运行速度。

3. 如何在分离的线程中初始化查询?

数据显示并不是即时的,尽管你使用CursorLoader 对象可以加快提速,这个对象可以在不打扰用户和Activity交互情况下,查询在后台进行。

使用这个对象武装你的应用,在对于每个ContentProvider 查询操作初始化一个单独的后台线程,然后只有在查询完成时将返回给Activity

4.其他

  • 使用StrictMode 探测UI线程中你要实现操作的潜在可能的长任务操作。
  • 使用特殊工具,如Systrace, Traceview来发现你的应用中响应瓶颈。
  • 显示操作流程图标
  • 如果初始安装非常耗时,显示启动画面。

二、设备电池的优化

主要影响电池耗电时间有:

  • 定期的唤醒更新
  • 通过3GEDGE的数据传递
  • 文本数据解析 没有JIT的正则表达式

5. 如何优化网络?

  • 如果没有连接,停止你的应用操作,只有3G或Wifi可连接时更新。
  • 选择压缩数据,比如将文本和二进制数据打包在一个请求中。
  • 使用有效率的解析器,使用流Stream解析而不是树tree解析器。
  • 减少与服务器的往返时间次数
  • 有可能对文本数据使用GZIP,充分利用CPU资源。

6. 如何优化前台应用?

  • 当设计唤醒锁时,请尽可能设置最低级别。
  • 避免潜在的Bug引起的电池消耗,使用timeout,杜绝死循环。
  • 激活android:keepScreenOn.
  • 考虑手动让GC垃圾回收Java对象,如XmlPullParserFactory BitmapFactory,对于正则使用Matcher.reset(newString) , 使用StringBuilder.setLength(0).
  • 小心同步操作synchronization ,尽管它在被UI线程驱动时是安全的。
  • ListView中要多用循环利用策略,尽量多重用一个组件
  • 尽可能使用网络定位而不是GPS,
  • onPause中一定要注销GPS更新,用户自己能在设置中激活GPS
  • 计算浮点需要很多电池,你也许要考虑地理数学等方面的精度,当在使用DisplayMetrics执行DPI tasks with .时,缓存计算结果。

7.如何优化后台运行的应用?

因为每个流程需要2M,当前台程序需要内存时需要重启,确保每个服务是短生命周期。
尽量使内存消耗低
设计应用每30分钟更新,但是只能在设备唤醒情况下。
服务Service睡眠是不好的,应答使用AlarmManager<receiver>这样manifest元素,当完成时调用stopSelf() ,当启动服务时,使用AlarmManager,使用*_WAKEUP要注意,通过setInexactRepeating()进行复位让安卓能包装你的应用更新,当使用<receiver>时,动态地在manifest中激活或失效其组件,特别是空操作情况下。

8. 其他

  • 在进行一个完整更新之前,检查电池和网络状态,进行批量处理时要等待电池较好的状态
  • 提供用户电池使用情况的可选项,以决定更新周期和后台行为。

三、使用最少内存实现UI

9. 如何分辨出布局性能问题?

当你使用布局管理器创建页面时,你可能会引入一些延迟,为了实现平衡 内存消耗少的UI,你需要搜查布局中潜在的性能瓶颈,可以使用安卓SDK目录<sdk>/tools/下的Hierarchy Viewer 工具。

另外一个发现性能巍峨提的工具是Lint,它能扫描应用源码中层次寻找Bug

10. 如何解决性能问题?

你可以通过压扁层次比如通过从LinearLayout 类转换到使用RelativeLayout类,压低层次水平。

到此这篇关于10种提升android运行效率的建议的文章就介绍到这了,更多相关提升android运行效率的建议内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android文件选择器ExFilePicker的使用方法

    Android文件选择器ExFilePicker的使用方法

    这篇文章主要为大家详细介绍了Android文件选择器ExFilePicker的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Filter过滤器和Listener监听器详解

    Filter过滤器和Listener监听器详解

    这篇文章主要介绍了 Filter过滤器和Listener监听器详解的相关资料,需要的朋友可以参考下
    2017-04-04
  • android onTouchEvent处理机制总结(必看)

    android onTouchEvent处理机制总结(必看)

    下面小编就为大家带来一篇android onTouchEvent处理机制总结(必看)小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android TextWatcher内容监听死循环案例详解

    Android TextWatcher内容监听死循环案例详解

    这篇文章主要介绍了Android TextWatcher内容监听死循环案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Android实现APP环境分离(利用Gradle)

    Android实现APP环境分离(利用Gradle)

    有过互联网软件开发经验的朋友一定对于测试环境和生产环境这两个词很是熟悉,在开发和测试阶段,我们常常需要在同一个设备上同时安装着两套甚至多套环境的同一个应用,便于观察调试。所以这篇文章就来和大家分享Android利用Gradle实现APP环境分离的方法。
    2016-09-09
  • Android模仿To圈儿个人资料界面层叠淡入淡出显示效果

    Android模仿To圈儿个人资料界面层叠淡入淡出显示效果

    这篇文章主要介绍了Android模仿To圈儿个人资料界面层叠淡入淡出显示效果的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Flutter Widget之NavigationBar使用详解

    Flutter Widget之NavigationBar使用详解

    这篇文章主要为大家介绍了Flutter Widget之NavigationBar使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 一个强大的侧滑菜单控件ASwipeLayout

    一个强大的侧滑菜单控件ASwipeLayout

    这篇文章主要为大家详细介绍了强大的侧滑菜单控件ASwipeLayout使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android客户端与服务端数据加密传输方案详解

    Android客户端与服务端数据加密传输方案详解

    这篇文章主要为大家介绍了Android客户端与服务端数据加密传输方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 自己实现Android View布局流程

    自己实现Android View布局流程

    这篇文章主要介绍了自己实现Android View布局流程,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-03-03

最新评论