十三、针对高性能的调整
我们刚刚完成了后端和应用编程接口的掌握工作。我们的旅程即将结束,但还没有结束!我们必须涵盖一些非常重要的要点!其中之一就是性能优化。我们将通过一些良好的实践来指导您实现这一目标。想想我们到目前为止开发的代码,以及我们如何将这些建议应用到它上面。
在本章中,我们将涵盖以下主题:
- 布局优化
- 优化以延长电池寿命
- 优化以获得最大响应
优化布局
要获得最大的用户界面性能,请遵循以下几点:
- 优化布局层次:避免嵌套布局,因为它可能是性能杀手!例如,您可以嵌套多个
LinearLayout
视图。与其这样,不如切换到RelativeLayout
。这可以显著节省您的性能!嵌套布局需要更多的处理能力用于计算和绘图。 - 如果可能的话重复使用布局:安卓提供了
<include />
来允许这一点。
看看下面的例子:
to_be_included.xml:
<RelativeLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/main_bg"
tools:showIn="@layout/includes" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
includes.xml
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/main_bg"
>
...
<include layout="@layout/to_be_included"/>
...
</LinearLayout>
- 除此之外,还可以使用
<merge>
。当一个布局包含在另一个布局中时,合并消除了视图层次结构中的冗余view groups
。让我们看看下面的例子:
to_merge.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/first"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/first"/>
<ImageView
android:id="@+id/second"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/second"/>
</merge>
当我们使用 include 在另一个布局中包含to_merge.xml
时,就像我们在前面的示例中所做的那样,Android 将忽略<merge>
元素,并将我们的视图直接添加到放置<include />
的容器中:
- 仅当需要时才在屏幕中包含布局-如果此时不需要视图,将其可见性设置为
Gone
而不是Invisible
。Invisible
仍然会创建一个实例视图。使用Gone
时,安卓只有在可视性变为Visible
时才会实例化视图。 - 使用像
ListView
或GridView
这样的容器来保存您的数据组。我们在上一章已经解释了为什么要使用它们。
优化电池寿命
有很多方法可以耗尽你的电池。其中一个例子就是在应用中做了太多的工作。过多的处理会影响电池。但是,我们将指出您可以节省电池的方法以及您必须避免的情况。请遵循这些要点,并在每次开发应用时牢记它们。
要保持电池处于最佳状态,请遵循以下建议:
- 尽可能减少网络通信。频繁的网络通话会影响您的电池。正因为如此,尽量做到这个最优。
- 确定您的手机是否正在充电。这可能是一个很好的时机来激发密集和性能要求高的行动,您的应用可能需要这样做。
- 仅当连接状态正常时,才监控连接状态并执行与连接相关的操作。
- 合理利用广播信息。频繁和不必要的发送广播消息可能会让你付出代价。想想你需要它们的频率,当你不再需要接收消息,并且接收消息没有任何好处的时候,注销你的接收者。
- 注意 GPS 的使用强度。频繁的位置请求会对您的电池造成严重影响。
保持应用的响应速度
有多少次你用了某个 Android 应用,得到消息说应用没有响应?为什么会这样?我们会解释的!请注意以下几点,这样您的应用就不会出现同样的情况:
- 确保没有任何东西阻挡你的输入(任何密集的操作,尤其是网络流量)。
- 不要在主应用线程上执行长时间的任务。
- 不要对您的广播接收器执行
onReceive()
方法中的长时间运行操作。 - 尽可能利用
AsyncTask
课。考虑使用ThreadPoolExecutor
。 - 尽可能使用内容加载器。
- 避免同时执行太多线程。
- 如果写入文件系统,请从单独的线程执行。
如果您仍然有 ANRs,或者您的应用运行缓慢,请使用 systrace 和 Traceview 等工具来跟踪问题的根源。
摘要
在这简短但重要的一章中,我们强调了关于保持和实现良好的应用性能和响应的要点。这些建议在应用优化中至关重要。因此,如果您的应用不遵循这些规则,您必须对其进行相应的优化。通过完成这一章,我们涵盖了开发安卓应用所需的所有内容。在下一章,我们将测试它。准备好写一些单元和仪器测试!
版权属于:月萌API www.moonapi.com,转载请注明出处