《APP研发录》读记(二)

##第三章:经典场景设计

###图片缓存设计:
图片缓存的出现是为了避免出现OOM问题,根据需要对图片的加载进行一些压缩和优化,它主要完成三个任务:

  • 图片的缓存,可以有效的减少对于流量的消耗,优化用户体验

  • 图片的压缩加载,降低加载大图时出现OOM的几率,保证鲁棒性

  • 完成图片的异步加载,可以简化开发

现在基本上使用的主流图片开源框架有很多:Universal-Image-Loader(已不再更新维护,不推荐使用,但可以研究阅读源码)
PicassoGlideFresco

###网络流量优化:

  • 对于网络请求回来的大量数据(大于1K)开启gzip压缩

  • 尽量减少网络请求次数

  • 要建立网络请求取消机制,在离开当前页面时需要能将该页面上发出的网路请求都取消了

  • 良好的网络请求设计是要加入重试机制(get)和防重机制(post)

  • 对于请求的网络图片要进行合适的裁剪(一般在图片加载器中进行配置)

  • 优秀的网络框架需要充分考虑在4G/3G甚至是2G网络状态下的情况,可以通过区分网络情况而决定加载图片的质量或者是是否加载图片(省流量模式和极速模式)

###城市列表的设计:

城市列表常见的解决方案有一下几种:

  • 把所有的城市都写死在本地的文件中

  • 每次都通过网络请求进行获取

  • 将数据保存在本地并标注版本号,每次启动APP时都进行更新检查,若有新版的城市列表则下载新版的城市列表到本地中。

  • 将数据保存在本地并标注版本号,每次检查更新时并不是更新全部,而是增量更新

###原生和H5的交互:

####原生调用H5的方法:

  • 在H5中定义好方法
  • 在原生中启用JavaScript,并在原生的点击事件中通过WebView来加载要执行的JavaScript方法,并传如参数。
//HTML中的代码
<script type="text/javascript">
	function changeColor(color){
		document.body.style.backgroundColor = color;
	}

</script>

//Android中的代码,调用了HTML中的changeColor方法
webView.getSettings().setJavaScriptEnable(true);

webView.loadUrl("http://www.wei/text.html");
btn.setOnClickListener(new View.OnClickListener(){
	@override
	public void onClick(){
		String color = "#00ee00";
		webView.loadUrl( "javascript:changeColor('"+ color+"');");
	}

});

####H5调用原生的方法:

  • 在原生中定义好调用接口的方法
  • 通过WebView将定义好的接口方法注册了
  • 在JavaScript中直接调用方法,并传入参数
//H5页面调用原生的callAndroidMethod()方法
<a onclick="baobao.callAndroidMethod(100,100,"ccc",true)">点击调用原生方法<a/>

//原生定义好接口方法
class JSInterface{
		public void callAndroidMethod(int a,int b,String c,boolean d){
			if(d){
				String message = "-"+(a+1)+"-"+(b+1)+"-"+c+"-"+d;

				new AlertDialog.Builder(MainActivity.this)
								.setTitle("title")
								.setMessage(message)
								.show();
			}
		}
}

//通过webView将定义好的方法注册
webView.addJavaScriptInterface(new JSInterface(),"baoabo");

###消灭全局变量:

  • 将数据放在Intent中进行传输(数据量不能过大)

  • 把全局变量序列化到本地,这样可以保证数据的持久性,但是也有很多的硬伤,包括线程同步问题,IO读写问题

  • UserManager是唯一的全局变量,

##第三章:Android命名和编码规范
关于命名和编码规范,每个团队有自己独有的习惯,这个并没有生特别硬性的规定,只要符合一般的规范就好。

  • 命名要见名知意,不要起无意义的名字

  • 布局文件名,可以根据用途来加缩写前缀来区分,例如MainActivity的布局文件可以写成act_main.xml等

  • 布局文件中的字符串,颜色值,尺寸等都放到对应的value文件中,不直接写死在布局文件中

  • 常量一般都是大写字母组成,通过下划线分割单词

编码规范主要是为了提高开发效率和便于后期维护而制定的规则,主要还是需要有一个统一的风格格式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值