我正在开发的我的Android应用程序需要每5秒在我的服务器上请求一个页面,但我担心这将是一个大电池消费者,有没有更简单的方法?我目前的方法是每5秒循环一次的服务:

protected void onHandleIntent(Intent intent) {

while (true){

long endTime = System.currentTimeMillis() + 5*1000;

while (System.currentTimeMillis() < endTime) {

synchronized (this) {

try {

wait(endTime - System.currentTimeMillis());

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost("http://www.***.***/***/request_sms.php");

String HTML = "";

try {

List nameValuePairs = new ArrayList(2);

nameValuePairs.add(new BasicNameValuePair("id", "1"));

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response = httpclient.execute(httppost);

HTML = EntityUtils.toString(response.getEntity());

} catch (ClientProtocolException e) {} catch (IOException e) {}

if(HTML.indexOf("[NO TEXTS]") > 0) {

} else {

Vector all_sms = getBetweenAll(HTML, "", "");

for(int i = 0, size = all_sms.size(); i < size; i++) {

String from = getBetween(all_sms.get(i), "", "");

String to = getBetween(all_sms.get(i), "", "");

String msg = getBetween(all_sms.get(i), "", "");

String sent = getBetween(all_sms.get(i), "", "");

String HTML1 = "";

HttpClient httpclient1 = new DefaultHttpClient();

HttpPost httppost1 = new HttpPost("http://www.***.***/***/add_sms.php");

try {

List nameValuePairs = new ArrayList(2);

nameValuePairs.add(new BasicNameValuePair("from", from));

nameValuePairs.add(new BasicNameValuePair("to", to));

nameValuePairs.add(new BasicNameValuePair("msg", msg));

nameValuePairs.add(new BasicNameValuePair("sent", sent));

httppost1.setEntity(new UrlEncodedFormEntity(nameValuePairs));

HttpResponse response1 = httpclient1.execute(httppost1);

HTML1 = EntityUtils.toString(response1.getEntity());

HN.post(new DisplayToast(HTML1));

} catch (ClientProtocolException e) {} catch (IOException e) {}

}

}

} catch (Exception e) {

}

}

}

}

}

解决方法:

基本上,您在服务器上注册用户设备,并且可以设置服务器以将通知推送到用户设备.然后,您可以将客户端更改为仅在服务器通知存在新数据时发出请求.

这应该很好,因为您几乎不需要经常提出请求.你一定会以这种方式节省电池寿命.

标签:android,request,http,sync,httpclient

来源: https://codeday.me/bug/20190903/1795612.html

php 等5秒钟继续,android – 如何每5秒钟继续请求一个页面而不是杀死电池?相关推荐

  1. java写一个android程序_【Android开发笔记】3.编写第一个Android程序

    前言 上一节我们通过一个Demo熟悉了Eclipse的基本使用.如何在模拟器和手机中运行以及如何打包成APK,但没具体编写代码,相信很多同学已经按耐不住了吧,这一节我们会动手编写代码来熟悉Androi ...

  2. android 请求方式有哪些,Android中的几种网络请求方式详解

    Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面整理四种常用网络请求方式. java.net包中的HttpURLConnection类 Get方式: // Get方式请求 ...

  3. xmarin.android导航栏,android – 如何在xamarin表单中更改导航页面后退按钮

    我想在导航页面中更改后退箭头图像.为此在Android应用程序中我创建了导航页面渲染器,然后使用方法toolbar.SetNavigationIcon和它不工作,但当我使用toolbar.SetLog ...

  4. Android入门教程 (二) 第一个App HelloWorld

    一 .前言 作为一名程序员,开始学习一门新的语言的第一步就是让程序输出 "Hello World!".学习Android也是一样,我的教学也是从第一个 "Hello Wo ...

  5. Android开发之ViewPager结合Fragment实现滑动页面的效果(源代码分享)

    前段日子的博客有介绍过关于ViewPager的使用,发现大家对那篇博客都情有独钟,今天我们就在来看一下ViewPager在Fragment中的使用吧,因为ViewPager是在补丁包中添加的低版本的包 ...

  6. JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面...

    JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { ...

  7. Android:如何添加一个页面,如何跳转页面

    一.如何为安卓添加多个页面 新建一个工程 打开这样 然后删掉 @Override     public boolean onCreateOptionsMenu(Menu menu) {        ...

  8. android ViewPager 实现点击小圆点切换页面 案例

    android ViewPager  实现点击小圆点切换页面 说明:在viewpager中,通过左右滑动可以切换页面,同样可以通过点击所指示的小圆点来滑动到某个页面页面. 具体实现方法如下: 主要ac ...

  9. android处理服务器的集合,android集合SSH搭建服务器客户端请求

    android集合SSH搭建服务器客户端请求 (2012-06-14 06:21:53) 标签: android 服务器 杂谈 android集合SSH搭建服务器客户端请求小弟以前是学的J2EE,由于 ...

最新文章

  1. ubuntu14.04下使用A3E生成satg配置
  2. 常用javascript函数
  3. mysql工具使用意义_MySQL性能分析、及调优工具使用详解
  4. shell看java控制台_java - 为什么我的shell脚本的输出不能打印在控制台? - SO中文参考 - www.soinside.com...
  5. Android媒体解码MediaCodec,MediaExtractor
  6. 事业单位计算机初级考试科目一模拟试题,广东教师资格考试之科目一模拟题
  7. hb:一个简单的 http/web bench 工具
  8. ai能不能同时切割多个对象_今天才发现,AI有这9个隐藏技能...
  9. OAuth 2 开发人员指南(Spring security oauth2)
  10. 广州的11个辖区_13张地形图,快速了解广东省广州市的11个市辖区
  11. ITIL学习笔记——核心流程之:变更管理
  12. c语言中ab代表什么,有些基金名称中含有AB或者C是什么意思,有什么区别的呢?...
  13. RedHat7.5最小化安装之后一些配置
  14. 人工智能研究中心快递柜——代码分析十三
  15. fullscreen mode and windowed mode
  16. c语言智能手环程序,首款医学智能手环c+手环使用图文教程
  17. Leco题目:无重复字符的最长子串
  18. 矢量数据shp七个文件介绍_Arcmap入门(五)——矢量数据的提取分析(裁剪+分割)...
  19. SQL Update的四种常见写法
  20. CynosDB 与传统数据库有什么不同?CynosDB 的兼容性怎么样?

热门文章

  1. java获取2017年第39周_java中怎么样取出39周的每周开始时间和每周结束时间?
  2. C++文件操作:fopen / fread / fwrite
  3. 3DSlicer30:VS-Qt5VSaddin-qt4.8.7dev
  4. 如何调用DLL (基于Visual C++6.0的DLL编程实现)
  5. const int 和INT const区别
  6. 【CyberSecurityLearning 10】扫描与爆破
  7. 实验四 [bx]和loop的使用+段前缀
  8. IOTA 交易,确认和共识
  9. 致创业者:APP已死 服务永生
  10. python采集_Python采集实例1