实战总结(一):关闭推送实现:Switch状态监听和SharedPreferences保存状态

简介: 实战总结(一):关闭推送实现:Switch状态监听和SharedPreferences保存状态

项目整改,需要有关闭推送功能


于是想到了用switch控件监听,通过其是否checked进行不同的处理。


调用方法为:setOnCheckedChanged()方法 他会自动重写onCheckedChanged方法,根据是否选中进行不同处理。


关键代码如下:


在SettingActivity里面:


//使用Databinding绑定控件;
mBinding.switchPush.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if(b){
                    //将数据保存至SharedPreferences
                    //如果打开推送 
                    SharedPreferences preferences=getSharedPreferences("user", Context.MODE_PRIVATE);
                    SharedPreferences.Editor editor=preferences.edit();
                    editor.putBoolean("flag",b);
                    editor.apply();
                    ToastUtils.showShort("开启推送");
                    doSomeThing(b);
                }else {
                    //将数据保存至SharedPreferences:
                    SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE);
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putBoolean("flag", b);
                    editor.apply();
                    ToastUtils.showShort("关闭推送!");
                    doSomeThing(b);
                }
            }
        });

为什么使用SharedPreferences 呢?因为如果不使用此方法保存状态,在退出界面后,重新进入此界面时,他会默认显示开启,无论你刚才进行了什么操作。所以在此需要保存其状态以保证界面正常显示。


 

private void doSomeThing(boolean Ischecked) {
         SDKUtils.initPush(Ischecked);
    }

此方法进入后调用SDK工具类里的初始化推送方法,如果为true,则会打开推送,如果为false,则会关闭推送。


关于推送如何实现,每个平台各有不同,就下去自行百度吧~


28787cccb161db5dfab191a5c0602ed.png


个人总结,如果不正或建议,欢迎交流,谢谢~


相关文章
|
2月前
|
JavaScript 前端开发
计算属性和 watch 监听函数的回调函数可以异步执行吗?
【10月更文挑战第23天】总的来说,虽然计算属性和监听函数的回调函数通常是同步执行的,但在特定情况下可以进行异步操作。在实际应用中,要根据具体的需求和场景来合理选择是否使用异步执行,并注意处理好异步操作的结果和状态,以确保应用的正常运行和性能优化。
|
4月前
|
Python
8. 如何解决 Tornado 检测到了有事件(events)被发送到一个已经关闭的流(stream)。在 Tornado 中,一个流代表一个请求或响应的数据流。这个警告可能意味着在请求处理的过程中,
8. 如何解决 Tornado 检测到了有事件(events)被发送到一个已经关闭的流(stream)。在 Tornado 中,一个流代表一个请求或响应的数据流。这个警告可能意味着在请求处理的过程中,
|
3月前
flutter:定时器&通过key操作状态 (十二)
本文档介绍了Flutter中的定时器使用方法、通过key操作状态的几种方式,包括localKey和GlobalKey的使用场景与示例代码,以及如何处理屏幕旋转导致的组件状态丢失问题。通过配置全局key,可以有效地管理父子组件之间的状态交互,确保在屏幕旋转等情况下保持组件状态的一致性。
|
JavaScript
state 和 props 触发更新的生命周期分别有什么区别?
state 和 props 触发更新的生命周期分别有什么区别?
|
8月前
当监听的属性是对象的引用时,`watch`选项是否会触发监听?
当监听的属性是对象的引用时,`watch`选项是否会触发监听?
43 2
|
8月前
|
JavaScript
如何使用`watch`选项来监听特定属性的变化?
如何使用`watch`选项来监听特定属性的变化?
53 0
Listener概述、监听对象的创建和销毁、监听域对象属性变化、监听会话相关的感知型监听器及监听器实现
Listener概述、监听对象的创建和销毁、监听域对象属性变化、监听会话相关的感知型监听器及监听器实现
119 0
node笔记记录7同步和异步3回调函数
node笔记记录7同步和异步3回调函数
60 0
node笔记记录7同步和异步3回调函数
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
1232 0
activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便
|
Go
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
187 0