Android开发细节——开发过程中遇到的细节问题与解决方案汇总【转】
2016-12-16 14:39
405 查看
来自:http://blog.csdn.net/qq_30379689/article/details/52442513
一、获取系统时间的24小时制与12小时制
最近在做项目的时候发生了一点错误,服务器端是24小时制的时间,而本地数据库则是12小时制的时间,然后翻阅了资料,记录下来
获取24小时制的时间:
[java] view
plain copy
public static String showDate() {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sDateFormat.format(new Date());
return date;
}
获取12小时制的时间:
[java] view
plain copy
public static String showDate() {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String date = sDateFormat.format(new Date());
return date;
}
两者区别就在于HH和hh,我们来看一下文档:
二、ViewPager中的Fragment在切换时不重新加载
最近在做项目的时候发生了一点错误,在ViewPager中的Fragment中切换到第三页重新切回第一页时,会重新加载第一页,显得页面一直在加载,降低了用户体验
viewPager的原理:
会事先加载好当前页的前后两页,也就是到了第三页的时候,第一页已经被销毁了,回到第二页的时候会重新创建
解决方法:
[java] view
plain copy
mViewPager.setOffscreenPageLimit(3);
官方文档对这个方法的解释:
设置的页面数量应该保留当前页面的视图层次中处于闲置状态。页面超出这一限制将在需要时重新创建的适配器。
这是作为一个优化。如果你提前知道的页面数量你需要支持或对页面延迟加载机制,调整该设置可以有好处在平滑的分页动画和交互。如果你有一个小的页面数量(3 - 4),您可以保持活跃,更少的时间将会花在为新创建的视图布局来回子树作为用户页面。
你应该保持低这个极限,特别是如果你的页面有复杂的布局。这个设置默认为1。
参数 int 限制多少页将保持私生活方面处于闲置状态。
三、优化购物车中选中物品时价钱相加减的精确运算
问题描述:做到商品购物车模块的时候,发现价钱的加减并不能单纯的使用+、-来实现,由于我们的价格都是double类型的,如10.24元,相互加减的时候会出现20.45555555的情况,所以我们需要使用到API中BigDecimal这个类进行包装,然后运算
代码如下:
[java] view
plain copy
public void selectSingle() {
//创建BigDecimal对象
BigDecimal bj1 = new BigDecimal(Double.toString(money1));
BigDecimal bj2 = new BigDecimal(Double.toString(money2));
if (selected_Id.contains(shop.get_id())) {//相减
sum_money = bj1.subtract(bj2).doubleValue();
} else {//相加
sum_money = bj1.add(bj2).doubleValue();
}
}
四、应用按Home键返回桌面,再次点击应用不能恢复回离开时的Activity
只要该栈中之前的任何一个Activity在manifest文件中定义了启动模式为singleTask,那么再次点击应用时会启动第一个Activity,只要去除之前Activity中singleTask属性就能恢复回离开时的Activity。
一、获取系统时间的24小时制与12小时制
最近在做项目的时候发生了一点错误,服务器端是24小时制的时间,而本地数据库则是12小时制的时间,然后翻阅了资料,记录下来
获取24小时制的时间:
[java] view
plain copy
public static String showDate() {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sDateFormat.format(new Date());
return date;
}
获取12小时制的时间:
[java] view
plain copy
public static String showDate() {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String date = sDateFormat.format(new Date());
return date;
}
两者区别就在于HH和hh,我们来看一下文档:
二、ViewPager中的Fragment在切换时不重新加载
最近在做项目的时候发生了一点错误,在ViewPager中的Fragment中切换到第三页重新切回第一页时,会重新加载第一页,显得页面一直在加载,降低了用户体验
viewPager的原理:
会事先加载好当前页的前后两页,也就是到了第三页的时候,第一页已经被销毁了,回到第二页的时候会重新创建
解决方法:
[java] view
plain copy
mViewPager.setOffscreenPageLimit(3);
官方文档对这个方法的解释:
设置的页面数量应该保留当前页面的视图层次中处于闲置状态。页面超出这一限制将在需要时重新创建的适配器。
这是作为一个优化。如果你提前知道的页面数量你需要支持或对页面延迟加载机制,调整该设置可以有好处在平滑的分页动画和交互。如果你有一个小的页面数量(3 - 4),您可以保持活跃,更少的时间将会花在为新创建的视图布局来回子树作为用户页面。
你应该保持低这个极限,特别是如果你的页面有复杂的布局。这个设置默认为1。
参数 int 限制多少页将保持私生活方面处于闲置状态。
三、优化购物车中选中物品时价钱相加减的精确运算
问题描述:做到商品购物车模块的时候,发现价钱的加减并不能单纯的使用+、-来实现,由于我们的价格都是double类型的,如10.24元,相互加减的时候会出现20.45555555的情况,所以我们需要使用到API中BigDecimal这个类进行包装,然后运算
代码如下:
[java] view
plain copy
public void selectSingle() {
//创建BigDecimal对象
BigDecimal bj1 = new BigDecimal(Double.toString(money1));
BigDecimal bj2 = new BigDecimal(Double.toString(money2));
if (selected_Id.contains(shop.get_id())) {//相减
sum_money = bj1.subtract(bj2).doubleValue();
} else {//相加
sum_money = bj1.add(bj2).doubleValue();
}
}
四、应用按Home键返回桌面,再次点击应用不能恢复回离开时的Activity
只要该栈中之前的任何一个Activity在manifest文件中定义了启动模式为singleTask,那么再次点击应用时会启动第一个Activity,只要去除之前Activity中singleTask属性就能恢复回离开时的Activity。
相关文章推荐
- Android开发细节——开发实战过程中遇到的细节问题与解决方案汇总
- 最近这段时间开发过程中遇到的一些细节问题汇总
- Android开发过程遇到的安装好的APP打开程序崩溃,或者安装后应用列表里没有的问题及解决方案
- android开发过程中遇到的一些问题汇总
- android 开发过程中遇到的问题及解决方案
- Android开发错误——Android Studio中遇到过的错误问题与解决方案汇总
- android开发过程遇到的问题和解决方案(不断更新)
- Android游戏开发中使用Libgdx引擎遇到的问题及解决办法汇总
- 工作流引擎组件[行政审批流程组件] 开发实施过程中遇到的问题汇总,希望能对大家有参考价值
- Windows下开发中遇到问题的解决方案汇总
- android开发过程中遇到的小问题
- 今天在从装系统后在配置android开发环境的过程中遇到了一点小问题
- Android开发遇到的细节问题(一)
- Html5 Builder 开发Android程序过程中遇到问题解决
- 第三方登录开发过程中遇到问题及解决方案
- android开发中经常遇到的问题汇总
- 工作流引擎组件[行政审批流程组件] 开发实施过程中遇到的问题汇总,希望能对大家有参考价值
- Android项目实战_新浪微博客户端开发过程中遇到的问题及解决办法01
- 开发过程中遇到的问题总结--qt for android
- android开发过程中遇到的小问题