Android 布局优化

01.常见布局优化方法

  • 布局优化的核心就是尽量减少布局文件的层级,常见的方式有:
    • 多嵌套情况下可使用RelativeLayout减少嵌套。
    • 布局层级相同的情况下使用LinearLayout,它比RelativeLayout更高效。
    • 使用标签重用布局、标签减少层级、标签懒加载。
    • 当有多个组件有相似的属性时,可以使用styles,复用样式定义;
    • 通过定义drawable来替代图片资源的使用,降低内存消耗;
阅读更多

Android 网络优化

01.图片分类优化

  • 图片网络优化
    • 比如我之前看到豆瓣接口,提供一种加载图片方式特别好。接口返回图片的数据有三种,一种是高清大图,一种是正常图片,一种是缩略小图。当用户处于wifi下给控件设置高清大图,当4g或者3g模式下加载正常图片,当弱网条件下加载缩略图【也称与加载图】。
    • 简单来说根据用户的当前的网络质量来判断下载什么质量的图片(电商用的比较多)。豆瓣开源接口可以参考一下!

02.获取网络数据优化

阅读更多

Android 内存泄漏优化

01.什么是内存泄漏

  • 一些对象有着有限的声明周期,当这些对象所要做的事情完成了,我们希望它们会被垃圾回收器回收掉。但是如果有一系列对这个对象的引用存在,那么在我们期待这个对象生命周期结束时被垃圾回收器回收的时候,它是不会被回收的。它还会占用内存,这就造成了内存泄露。持续累加,内存很快被耗尽。
  • 比如:当Activity的onDestroy()方法被调用后,Activity以及它涉及到的View和相关的Bitmap都应该被回收掉。但是,如果有一个后台线程持有这个Activity的引用,那么该Activity所占用的内存就不能被回收,这最终将会导致内存耗尽引发OOM而让应用crash掉。
阅读更多

Android 注解详细介绍

01.什么是注解

1.1 注解分类

  • 首先注解分为三类:
    • 标准 Annotation
      • 包括 Override, Deprecated, SuppressWarnings,是java自带的几个注解,他们由编译器来识别,不会进行编译, 不影响代码运行,至于他们的含义不是这篇博客的重点,这里不再讲述。
阅读更多

Android Annotation 注解详细介绍

1.Annotation库的简单介绍

  • 包含一系列有用元注释,帮助开发者在编译期间发现可能存在的bug
  • 是属于Support Lib其中之一,独立jar包
  • 通过注释来完善自身代码质量
  • 官方文档:
    • AndroidAnnotations是一个能让你进行快速开发的开源框架,它让你关注真正重要的地方,它可以简化你的代码,并且有利于你后期的维护
  • 库的特点
阅读更多

Android Retrofit 基本使用和源码解析

1.关于Retrofit基本介绍

  • Retrofit是Square 公司开发的一款正对Android 网络请求的框架。底层基于OkHttp 实现,OkHttp 已经得到了google 官方的认可。
  • Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,如果看源码会发现其实本质上是OkHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口请求的底层,其将请求返回JavaBean,对网络认证REST API进行了很友好的支持。使用Retrofit将会极大的提高我们应用的网络体验。
阅读更多

Android WebView 源码分析

2.loadurl,LoadData ,loadDataWithBaseURL分析

2.1 loadurl

1
2
LoadUrl比较费流量,而且加载起来有点慢
使用loadUrl()加载一个Url地址
阅读更多

Android WebView 防坑总结

02 后台无法释放js导致发热耗电

  • 在有些手机你如果webview加载的html里,有一些js一直在执行比如动画之类的东西,如果此刻webview 挂在了后台这些资源是不会被释放用户也无法感知。
  • 导致一直占有cpu 耗电特别快,所以如果遇到这种情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
在onStop里面设置setJavaScriptEnabled(false);
在onResume里面设置setJavaScriptEnabled(true)。
@Override
protected void onResume() {
super.onResume();
if (mWebView != null) {
mWebView.getSettings().setJavaScriptEnabled(true);
}

}
@Override
protected void onStop() {
super.onStop();
if (mWebView != null) {
mWebView.getSettings().setJavaScriptEnabled(false);
}
}
阅读更多

Android WebView 和 js 交互

1.WebView和Js交互方式

1.1 Android去调用JS的代码方式

  • 对于android调用JS代码的方法有2种:

    • 第一种方式已经不推荐使用了,第二种方式不仅更方便,也提供了结果的回调,但仅支持API 19以后的系统。
阅读更多

Android WebView 基础使用

1.关于WebView的使用优点

  • 可以直接显示和渲染web页面,直接显示网页
  • webview可以直接用html文件(网络上或本地assets中)作布局
  • 和JavaScript交互调用

2.WebView最简单的使用方法

阅读更多