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

来源:互联网 发布:淘宝优惠券怎么成代理 编辑:程序博客网 时间:2024/06/06 12:30

应用场景:
  非常多啦,只要你这个控件会根据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包下MyServiceif(serviceRunning(上下文,"com.ycc.service.MyService")){            控件.setText("正在下载");        }else{            控件.setText("点击下载");        }

上面说的只是界面初始化哟,如果你要在下载完成后显示”下载完成”那就在下载完成后发消息给Handler,在那儿更新UI吧

和Service没有关系的控件,可以把控件的状态存到SharedPreferences偏好设置里,根据里面的值初始化控件

0 0
原创粉丝点击