简介:
一些前端应用例如:需要更新天气信息,更新帖子,更新信息等。
本文介绍通过服务和广播接收者来完成。定时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);
}
}
主界面开启一次服务,服务发送一个定时任务,广播接收者收到任务后,重新开启一次服务,相当于守护进程。
Demo样例下载:http://www.huwan.xin/Source/AppPackage/ZIP/Android/BroadcastWithServiceDemo.rar
参考阅读:Android开发-通过观察者设计模式刷新数据或者关闭界面
参考阅读:Android开发-静态广播(包含broadcast向activity中传值),动态广播(有序/无序)使用介绍
参考阅读:Android开发-Android退出多个activity进程/同时关闭多个界面/关闭上一个界面
上面几个文档可以解决通过定时刷新之后,界面如何进行更新。
更多内容请访问:www.huwan.xin