android广播刷新,Android开发-通过广播和服务开启定时刷新任务

简介:

一些前端应用例如:需要更新天气信息,更新帖子,更新信息等。

本文介绍通过服务和广播接收者来完成。定时3秒更新一次,但是由于手机性能的关系,更新可能会有几秒延迟。

步骤一:MainActivity.java开启服务

packagecom.huwan.broadcastwithservicedemo;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

publicclass MainActivity extends Activity {

@Override

protected void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//开启服务

Intent intent = newIntent(this, LongRunningService.class);

startService(intent);

}

}

步骤二:LongRunningService.java服务代码

packagecom.huwan.broadcastwithservicedemo;

importjava.util.Date;

importandroid.app.AlarmManager;

importandroid.app.PendingIntent;

importandroid.app.Service;

importandroid.content.Intent;

importandroid.os.IBinder;

importandroid.os.SystemClock;

importandroid.util.Log;

publicclass LongRunningService extends Service {

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public int onStartCommand(Intentintent, int flags, int startId) {

new Thread(new Runnable() {

@Override

public void run() {

Log.e("LongRunningService","executed at " + new Date().toString());

}

}).start();

AlarmManager manager =(AlarmManager) getSystemService(ALARM_SERVICE);

//int anHour = 60 * 60 *1000;

int anTime = 3 * 1000; // 3秒打一次日志

long triggerAtTime =SystemClock.elapsedRealtime() + anTime;

Intent i = new Intent(this,AlarmReceiver.class);

PendingIntent pi =PendingIntent.getBroadcast(this, 0, i, 0);

manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime, pi);

returnsuper.onStartCommand(intent, flags, startId);

}

}

步骤三:AlarmReceiver.java服务接收者,接受到服务后重新请求服务

packagecom.huwan.broadcastwithservicedemo;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

publicclass AlarmReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context,Intent intent) {

Intent i = newIntent(context, LongRunningService.class);

context.startService(i);

}

}

主界面开启一次服务,服务发送一个定时任务,广播接收者收到任务后,重新开启一次服务,相当于守护进程。

参考阅读:Android开发-通过观察者设计模式刷新数据或者关闭界面

参考阅读:Android开发-静态广播(包含broadcast向activity中传值),动态广播(有序/无序)使用介绍

参考阅读:Android开发-Android退出多个activity进程/同时关闭多个界面/关闭上一个界面

上面几个文档可以解决通过定时刷新之后,界面如何进行更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值