今天刚好在写一个在线二维码的刷新,每间隔1分钟进行刷新,android的机制导致了如果android App在后台运行的化,会一直走,这样用户的流量什么的完全耗不起,顾有了下面的小小研究。
导致流量走的比较快的原因如下:
1.访问数据的流量,这个和后端接口查询等有很大的关系,然而本宝并不能怎么样,这里接口端的兄弟可以优化下。
2.多次访问数据会导致流量使用比较多
作为android开发,研究点就在这里的访问次数了,有了方向,应该比较好容易优化了happy,因为本人使用的访问数据框架为 OKHTTp+RXAndroid等观察模式的数据访问框架,顾已经对,请求错误超时等做过一系列的处理。
1.本人首先用了一个简单粗暴的方法谢了一个计时器,这里并没有使用轮询访问
/***
* 倒计时
*/
private CountDownTimer timer = new CountDownTimer(6000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
timerIsStart = true;
Logs.d(TAG, "倒计时开始--------------->");
}
@Override
public void onFinish() {
Logs.d(TAG, "timer is onFinish");
timerIsStart = false;
timer.cancel();
//完成之后
getNetData();
}
};
2.拉取数据的方法
比较简单粗暴的方式,这里的getNetData();为本人的一个拉取数据的处理
/***
* 拉取网络数据
*/
private void getNetData() {
Logs.d(TAG, "getNetData()---------------->");
Logs.d(TAG, "data is :" + bundle_data + ",id:" + bundle_data.getBusinessId());
if (bundle_data != null && !StringUtlis.isEmpty(bundle_data.getBusinessId())) {
String company = "", groupShortName = "", businessId = "", miniLogo = "";
if (!StringUtlis.isEmpty(bundle_data.getCompany())) {
company = bundle_data.getCompany();
}
if (!StringUtlis.isEmpty(bundle_data.getMiniLogo())) {
miniLogo = bundle_data.getMiniLogo();
}
businessId = bundle_data.getBusinessId();
groupShortName = bundle_data.getGroupShortName();
NetService.getInstance().getScanDiscount(company, groupShortName, businessId, miniLogo, new Observer<CommResultBeanVo>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(CommResultBeanVo value) {
timeStamp = System.currentTimeMillis();
ScanDiscountBean data = new ScanDiscountBean();
if (value != <