您的位置:首页 > 产品设计 > UI/UE

UI控件的初始显示状态与Service的存亡状态绑定

2016-11-25 00:21 253 查看
应用场景:

  非常多啦,只要你这个控件会根据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偏好设置里,根据里面的值初始化控件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ui 初始化 显示 控件
相关文章推荐