Service 动态更新 UI
http://blog.csdn.net/u013724061/article/details/38642049
最终效果:
动态显示当前时间和电量
思路:
首先在Activity里用内部类定义两种广播,一种是系统广播(电池),另一种是自定义广播。
private class SimpleBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
int currLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, ); //当前电量
int total = intent.getIntExtra(BatteryManager.EXTRA_SCALE, ); //总电量
int percent = currLevel * / total;
updateG(percent);
Log.i(TAG, "battery: " + percent + "%");
}
} private class UpdateTimeReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); String dateStr = dateFormat.format(date);
String timeStr = timeFormat.format(date); tv_date.setText(dateStr + ":" + timeStr);//显示出日期
}
}
在OnResume中注册广播,OnPause中移除 (文章中有为什么不在onStart和onStop中的解释)
@Override
protected void onResume() {
super.onResume(); IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
simpleBroadcastReceiver = new SimpleBroadcastReceiver();
registerReceiver(simpleBroadcastReceiver, intentFilter); intentFilter = new IntentFilter("ACTION_UPDATE_TIME");
updateTimeReceiver = new UpdateTimeReceiver();
registerReceiver(updateTimeReceiver, intentFilter); Intent intent = new Intent(this,UpdateGService.class);
startService(intent);
} @Override
protected void onPause() {
super.onPause();
unregisterReceiver(simpleBroadcastReceiver);
unregisterReceiver(updateTimeReceiver);
Intent intent = new Intent(this,UpdateGService.class);
stopService(intent);
}
建立个service来处理动态更新
public class UpdateGService extends Service {
@Override
public void onCreate() {
super.onCreate();
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
Intent timeIntent = new Intent();
timeIntent.setAction("ACTION_UPDATE_TIME");//自定义Action
sendBroadcast(timeIntent); //发送广播
}
}, , ); //每隔1秒
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
最终效果:

Service 动态更新 UI的更多相关文章
- 在Android中实现service动态更新UI界面
之前曾介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的.那么如何实现service动态更新UI界面呢?案例:通过service ...
- android中实现service动态更新UI界面
案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务. 注册BroadcastReceiver 在主程序activity中注册一个Bro ...
- Android Handler传递参数动态更新UI界面demo
package com.example.demo_test; import android.app.Activity; import android.os.Bundle; import android ...
- 动态更新UI的方式
1. TimerTask 和 timer连用: 这里主要是实现倒计时, TimerTask 里面有方法runOnUiThread,在这个方法里面调用timer cancel()停止倒计时,同样更新UI ...
- Android UI:机智的远程动态更新策略
问题描述 做过Android开发的人都遇到过这样的问题:随着需求的变化,某些入口界面通常会出现 UI的增加.减少.内容变化.以及跳转界面发生变化等问题.每次发生变化都要手动修改代码,而入口界面通常具有 ...
- Mono for android 如何动态添加View,线程内部如何更新UI.
貌似所有设计到UI的程序原理都是一样的,子线程是不能够更新UI状态的,所以就必须使用UI自身或者第三方来更新UI. 如 在WinForm 中 就可以使用Control.Invoke(Action ac ...
- Service和广播联合更新UI的例子
sa111111 于 2010-11-19 10:56 发表在 [Android实例] [复制链接] [只看楼主] [上一主题] [下一主题] 在Android中,异步更新UI,通常我们会选用Ha ...
- android 不能在子线程中更新ui的讨论和分析
问题描写叙述 做过android开发基本都遇见过 ViewRootImpl$CalledFromWrongThreadException,上网一查,得到结果基本都是仅仅能在主线程中更改 ui.子线程要 ...
- 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~
前日,一小伙伴问我一个问题,说它解决了半天都没解决这个问题,截图如下: 大概楼主理解如下: 如果在应用中有一个判断wifi的开关和一个当前音量大小的seekbar以及一个获取当前电量多少的按钮,想知道 ...
随机推荐
- Tomcat安装及调试
Web服务器的作用 1.接收客户端的请求 2.给客户端作出响应 我们也可以自己手写Web服务器,但是那样太麻烦,而且难度很大,所以我们可以 使用目前应用最广泛的Tomcat服务器 常见的Web服务器 ...
- IDFA
https://zhuanlan.zhihu.com/p/24161646 IDFA全称是identifier for advertisers,在了解IDFA之前,我们需要了解另一个概念,叫UDID. ...
- Python 脚本利用adb 进行手机控制
相关参考:https://www.cnblogs.com/bravesnail/articles/5850335.html 一. adb 相关命令: 1. 关闭adb服务:adb kill-serv ...
- ASP.NET Core 2.0 多应用实现Cookie共享
前言 .NET Core 2.0 发布之后,在Authentication中间件部分,相关API有不少改动(官方文档),本文主要讲的就是实现应用Cookie共享,对Cookie中间件使用不了解的可以去 ...
- django安装与环境调配
91.查看当前已有虚拟环境 2.进入虚拟环境 3.退出当前虚拟环境 4.创建python隔离环境前先可用此先查看已经拥有什么版本的python 5.创建一个名为first的python隔离环境 6.安 ...
- Python之lambda匿名函数使用if条件语句
C0LOR1 = "PapayaWhip" COLOR2 = "Tan" selectColor = lambda num: C0LOR1 if num % 2 ...
- 用开源 ASP.NET MVC 程序 Bonobo Git Server 搭建 Git 服务器(转)
用开源 ASP.NET MVC 程序 Bonobo Git Server 搭建 Git 服务器 现在不用Git,都不好意思说自己是程序员. 当你想用Git,而源代码服务器是Windows系统时,你 ...
- [EXP]WordPress Core 5.0 - Remote Code Execution
var wpnonce = ''; var ajaxnonce = ''; var wp_attached_file = ''; var imgurl = ''; var postajaxdata = ...
- [0day]微软XP系统右键菜单任意DLL却持
作者:K8哥哥只要在DLL上右键就被却持 任意DLL名称 任意位置 (其实是EXPLOR) 这个漏洞早已存在,08年的时候就发现了(当时编译某个DLL源码) 在DLL上右键看属性的时候崩溃了,当时就想 ...
- CDH 版本子节点启动问题
今天下午整整为了启动一个节点瞎忙活一下午,惨痛的教训还是记录下来吧,毕竟付出了代价.事情原委,一个同事在一台机器上占用了大量内存训练CTR点击率模型,而这台机器上部署了分布式Hadoop的一个data ...