开机自动启动服务并定时发送请求
2011-08-02 10:38
232 查看
一、业务逻辑:
开机自动启动服务,然后定时发送请求,根据返回的数据判断是否有新消息,有新消息的话就弹出小窗口,点击窗口打开浏览器访问wap页面。
二、实现代码:
1,首先写一个Receiver类用来接受开机启动的广播,因为开机启动的时候android系统会发送一个“android.intent.action.BOOT_COMPLETED”的广播信息,我们接受这个广播信息就可以了,在onReceive()这个方法中实现自己的逻辑就可以了。
2、写一个Service类在后台定时发送请求,并实现弹出窗口,在这里有必要说明下Service的生命周期,
当调用startService()方法时:
(1)如果Service并没有启动,将先后调用onCrete()---->onStart()方法
(2)如果Service已经启动,将只调用onstart()方法
3、写一个Receiver类来接受AlarmManager发送的广播,接受到广播之后就向服务器发送一个HttpPost请求,根据返回的数据来是否弹出小窗口。
开机自动启动服务,然后定时发送请求,根据返回的数据判断是否有新消息,有新消息的话就弹出小窗口,点击窗口打开浏览器访问wap页面。
二、实现代码:
1,首先写一个Receiver类用来接受开机启动的广播,因为开机启动的时候android系统会发送一个“android.intent.action.BOOT_COMPLETED”的广播信息,我们接受这个广播信息就可以了,在onReceive()这个方法中实现自己的逻辑就可以了。
public class mReceiver extends BroadcastReceiver(){ @Override public void onReceive(Context context,Intent intent){ //在此实现自己的逻辑 intent = new Intent(context,TimeService.class); context.startService(intent);//启动服务 } }
2、写一个Service类在后台定时发送请求,并实现弹出窗口,在这里有必要说明下Service的生命周期,
当调用startService()方法时:
(1)如果Service并没有启动,将先后调用onCrete()---->onStart()方法
(2)如果Service已经启动,将只调用onstart()方法
public class TimeService extends Service{ @Override public void onCreate(){ } @Override public void onStart(Intent intent,int startId){ super.onStart(intent, startId); Intent mintent = new Intent(this,AlarmReceiver.class); PendingIntent pIntent = PendingIntetn.getBroadcast(this,0,mintent,0); long startTime = SystemClock.elapsedRealtime();//开始时间 AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SRVICE); //每10秒发送一个广播,时间到了将发送pIntent这个广播,在alarmReceiver中接受广播 alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,startTime,10*1000,pIntent); } }
3、写一个Receiver类来接受AlarmManager发送的广播,接受到广播之后就向服务器发送一个HttpPost请求,根据返回的数据来是否弹出小窗口。
public class AlarmReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent){ String netJson =readTwitterFeed(); JSONobject jsonObject = new JSONobject(netJson.toString()).getJSONobject("userbean"); String Uid = jsonObject.getString("Uid"); String Showname = jsonObject.getString("Showname"); String Avtar = jsonObject.getString("Avtar"); String State = jsonObject.getString("State"); String message = jsonObject.getString("Message"); if("1".equal(message)){ //弹出小窗口 } } //返回的数据格式为: //{"userbean": //"Uid":"100","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":"1","Message":"1"}} // 当Message等于1的时候表示改用户有消息,就弹出窗口提示 public StringBuilder readTwitterFeed() { StringBuilder builder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet( "http://twitter.com/statuses/user_timeline/vogella.json"); try { HttpResponse response = client.execute(httpGet); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if (statusCode == 200) { HttpEntity entity = response.getEntity(); InputStream content = entity.getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(content)); String line; while ((line = reader.readLine()) != null) { builder.append(line); } } else { Log.e(ParseJSON.class.toString(), "Failed to download file"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } }
相关文章推荐
- 如何让你的Tomcat在开机时自动以服务的形式启动
- linux设置开机服务自动启动/关闭自动启动命令
- [问题笔记][开机自动启动服务和安装驱动模块]
- 解决Win7系统DHCP Client服务已设置为“自动”开机仍然无法启动问题
- 添加服务到开机自动启动(centos7开机自启动nginx,php-fpm)
- CentOS设置开机自动启动某服务
- weblogic 服务开机自动启动
- centos开机自动启动SVN服务的方法1、编辑rc.local文件
- Fedora 17 设置开机自动启动服务使用新的服务管理工具
- CentOS 6.3开机启动服务及自动联网
- centos6.9下设置nginx服务开机自动启动
- (转)使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- 如何把spring微服务部署为Windows Service并开机自动启动
- centos设置apache、mysql及ftp服务开机自动启动的方法
- redhat 添加开机自动启动服务
- 配置ubuntu开机自动启动samba服务图形配置
- CentOS设置开机自动启动某服务
- Centos7 开机自动启动服务
- CentOS设置开机自动启动某服务
- 转 linux设置开机服务自动启动/关闭自动启动命令 chkconfig