Android Java的跟踪和调优
调优总是建立在跟踪和测试的基础上, 蒙着调不会有好结果. 当然, 调优之前先把结构理一理, 把各种warning搞一搞, 我觉得是很有必要的, 这样调优时能省好多力气.
调优之前
- 结构先重构下, 看看内聚和解耦是否好.
- warning处理下, 可以删除冗余代码.
- 删除不必要的中间变量, 这个很重要, 可以发现很多隐藏的bug. 比如在函数中new一个局部变量, 再赋值给对象属性, 不如直接清空对象属性, 再在对象属性中做直接的操作, 这样, 异常发生时, 也比较清晰, 对象属性也可以声明为final, 线程更安全.
- 删除不必要的判断条件, 或者把判断条件变为系统本身就有的东西, 比如我们会置一个标志位, 判断是否layout到合适的position, 那么, 可以改为判断view的下边缘位置是否为0, 这个判断更本质, 副作用更少. 更安全, 并且无需重置和初始化.
- 通盘考虑下, 各种功能结构应该放的位置, 可以把功能放在更合理的位置. 这个我还没有找到合适的工具. 一般就用纸和笔.
调优的判断, 各种性能工具
调优的判断, 代码工具
-
使用debug, 不要忘了android是有debug功能的. 而且还很强大, 可以跟踪下去.
-
使用log, 这个要用到反射机制:
public class mactivity extends Activity implements layoutxxx{ /** *这是构建过程中的回调函数, 可以setcontentview. **/ @Override protected void onCreate(Bundle save){ super.onCreate(save); setContentView(layoutmain); //因为从这里知道了, 调用了getwindow().xxx, 那么getwindow()究竟是啥呢? //我们可以使用log. Log.d("TAG", getWindow().getClass().getName()); //log输出: D/ViewDemoActivity(3969): com.android.internal.policy.impl.PhoneWindow //从log判断, 我们可以看出来这里调用了phonewindow } }
调优考虑的方向
- 接口化.
-