android 如何在service中定时请求网络
来源:互联网 发布:v字仇杀队v是谁知乎 编辑:程序博客网 时间:2024/06/04 01:17
一般来说,android的一些耗时的操作很多都会丢给后台服务来做,而一些公司因为安全原因,再每次请求的网络的时候请求头会隔一段时间变化一次,但是也不能每次请求网络都去拿一次请求头,所以这个时候在service后台定时请求网络获取最新的请求头然后储存起来是很有必要的,
下面直接贴代码,记录一下
public static final String TAG = "TokenService"; private static boolean control = false; private TokenBean mTokenBean; private AlarmManager mManager; private PendingIntent mPi; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { Log.e(TAG, "onCreate: "); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { String s = SPUtils.get(UIUtils.getContext(), "RefreshToken", "") + ""; long lo = (long) SPUtils.get(UIUtils.getContext(), "ExpiredToken", UtilsConstant.DSE);//根据实际来 我这是根据自己服务器时间进行的 mManager = (AlarmManager) getSystemService(ALARM_SERVICE); long triggerAtTime = SystemClock.elapsedRealtime() + lo;//每隔多久请求一次 lo是时间 单位毫秒 Log.e(TAG, "onStartCommand: " + triggerAtTime); Intent i = new Intent(this, AlarmssReceiver.class);//开启广播 mPi = PendingIntent.getBroadcast(this, 0, i, 0); mManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, mPi);//启动 //判断是否第一次进来,一般来说用户登录就直接开启服务 判断是第一次登录就不用请求 if (!control) { control = true; Log.e(TAG, "第一次进来"); } else { Log.e(TAG, "第二次进来"); Log.e(TAG, "onStartCommand: 开始请求网络获取Token" + s); Log.e(TAG, "隔多久请求" + lo); if (!TextUtils.isEmpty(s)) { //这里放请求网络的逻辑 可以先打个log看看 } else { Toast.makeText(getApplicationContext(), "你好请重新登录", Toast.LENGTH_SHORT).show(); } } return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { Log.e(TAG, "onDestroy: 关闭广播注册者"); mManager.cancel(mPi);//关闭的服务的时候同时关闭广播注册者 super.onDestroy(); }
这里写一个广播,用来定时刷新一下服务
public class AlarmssReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { UIUtils.startTokenService();//可以把开启跟关闭服务的逻辑封装一下,直接调用// Intent i = new Intent(context, TokenService.class);// //启动服务// context.startService(i); }}
阅读全文
1 0
- android 如何在service中定时请求网络
- Android Retrofit网络请求Service
- 举例说明如何在android中使用Service
- Android如何在service中显示Dialog
- Android中网络请求放在子线程中问题
- 在android中使用OkHttp框架处理网络请求
- android 在service中如何向activity传递数据
- 在Android中如何侦听Service内部的状态
- 如何在Android中利用AIDL添加service
- Android中如何让Service不被一键清理且在息屏后保活
- Android中网络请求 Volley
- android 中如何在androidmanifest.xml设置权限请求
- android 中如何在androidmanifest.xml设置权限请求
- android中如何创建Service
- android中通过网络请求数据显示在Listview中,面对许多的item,如何给每个item设置点击事件以跳转到不同的activity
- 在Android中Service概述
- 在ORACLE中如何定时执行任务
- 如何在Spring中配置定时任务
- 面向对象的程序设计——理解对象
- h
- Oracle 常用 SQL 语句大全
- 使用百度Ueditor编辑器的时候,如何才能获取图片的保存路径,即src的值,以便满足需求:将路径存入数据库
- quartz spring 实现动态定时任务
- android 如何在service中定时请求网络
- 删除日志文件+日志文件组/日志文件状态+删除日志文件组
- 值得推荐的一款WEB前端开发必备谷歌浏览器扩展插件--Visual Event
- 分治法——循环赛事日程表
- 获取页面中某元素的绝对坐标
- RMI、Hessian、Burlap、Httpinvoker、WebService的比较
- 面试(四) 数据结构与算法
- 惠普服务器CentOS7安装不识别硬盘,安装后启动失败问题
- 框架集a标签跳转问题