概述
一般来说,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);
}
}
最后
以上就是壮观画笔为你收集整理的android 如何在service中定时请求网络的全部内容,希望文章能够帮你解决android 如何在service中定时请求网络所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复