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

应用场景:
  非常多啦,只要你这个控件会根据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偏好设置里,根据里面的值初始化控件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值