UI控件的初始显示状态与Service的存亡状态绑定
2016-11-25 00:21
253 查看
应用场景:
非常多啦,只要你这个控件会根据Service的运行状态改变内容,比如你一个按钮原始状态是“点击下载”,点击后显示“正在下载”,你不可能看着它下载吧,你得去其他Activity逛逛,逛完回来下载依然没有完成控件还应该显示”正在下载”,可现实是控件成了初始状态“点击下载”
解决思路(不是存SP):
控件的显示状态和Service的运行状态绑定,Service在运行说明正在下载就显示”正在下载”,不在运行说明下载完成或者被系统干掉了就显示”点击下载”
代码逻辑:
获取系统现在正在运行得所有服务,看看有没有我们的服务在运行,然后做相应UI初始化
调用:
上面说的只是界面初始化哟,如果你要在下载完成后显示”下载完成”那就在下载完成后发消息给Handler,在那儿更新UI吧
和Service没有关系的控件,可以把控件的状态存到SharedPreferences偏好设置里,根据里面的值初始化控件
非常多啦,只要你这个控件会根据Service的运行状态改变内容,比如你一个按钮原始状态是“点击下载”,点击后显示“正在下载”,你不可能看着它下载吧,你得去其他Activity逛逛,逛完回来下载依然没有完成控件还应该显示”正在下载”,可现实是控件成了初始状态“点击下载”
解决思路(不是存SP):
控件的显示状态和Service的运行状态绑定,Service在运行说明正在下载就显示”正在下载”,不在运行说明下载完成或者被系统干掉了就显示”点击下载”
代码逻辑:
获取系统现在正在运行得所有服务,看看有没有我们的服务在运行,然后做相应UI初始化
/** * 判断某个服务是否正在运行 * @param context * @param servierName 服务的名称(该服务类的完整路径) * @return 是否运行 */ public **static** boolean serviceRunning(Context context, String servierName) { ActivityManager mAMangager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); //获得服务集合,参数:服务个数 List<ActivityManager.RunningServiceInfo> list = mAMangager.getRunningServices(100); //遍历比对 for (ActivityManager.RunningServiceInfo info : list) { String currentService = info.service.getClassName(); if (servierName.equals(currentService)) { //存在 return true; } } return false; }
调用:
比如我的服务类是service包下MyService if(serviceRunning(上下文,"com.ycc.service.MyService")){ 控件.setText("正在下载"); }else{ 控件.setText("点击下载"); }
上面说的只是界面初始化哟,如果你要在下载完成后显示”下载完成”那就在下载完成后发消息给Handler,在那儿更新UI吧
和Service没有关系的控件,可以把控件的状态存到SharedPreferences偏好设置里,根据里面的值初始化控件
相关文章推荐
- 【UE4】【C++】枚举类(对于不同状态显示不同的颜色准心)C++设置状态,蓝图设置颜色(UI颜色绑定)
- DataSet数据绑定到控件时的数据状态变化过程
- Control Study -> 主表和子表数据同时在绑定控件显示(示例代码下载)
- 在基于对话框的应用中执行空闲状态处理(比如用ON_UPDATE_COMMAND_UI更新控件)
- 数据显示控件在绑定显示的各种格式
- VB.Net自己写的一个控件:ComboBox下拉列表中显示多列数据(可以绑定数据表)
- .Net中,绑定控件的时间显示格式
- 数据绑定控件Repeater/GridView/DataList在前台显示正确的文本格式收藏
- Control Study -> 主表和子表数据同时在绑定控件显示(示例代码下载)
- 通用解决方案:解决NHibernate SELECT 多表查询结果List绑定控件显示问题。
- .NET20 一种简单的窗口控件UI状态控制方法
- 怎样在gridview和datalist之类的绑定控件里控制显示 数据省略?
- 主表和子表数据同时在绑定控件显示(示例代码下载)
- Control Study -> 主表和子表数据同时在绑定控件显示(示例代码下载)
- 在基于对话框的应用中执行空闲状态处理(比如用ON_UPDATE_COMMAND_UI更新控件)
- .NET20 一种简单的窗口控件UI状态控制方法
- 如何让GridView控件在绑定的数据源没有数据时也显示标题
- .NET2.0 一种简单的窗口控件UI状态控制方法
- 用ASP.net 的GridView控件分页显示图片,并历遍给定的文件夹中的文件绑定到GridView控
- DataBind包括三大方法,Repeater,DataList和DataGrid,这些控件都位于 System.Web.UI.WebControls 命名空间中,从 WebControl 基类中直接或间接派生出来的。这些方法都是通过HTML来显示数据的内