使用黏性广播判断程序是否第一次启动

最近的一个需求,需要判断是否是第一次启动应用,百度之后大多是使用SharedPreferences去实现,即去读取一个自定义的值,第一次自然是取不到的,然后给他赋值,之后启动再次读取该值自然可以读到,即“非第一次启动”。但是这样并没有用,因为SharedPreferences的值会一直储存在内存里,即时我尝试了在Activity的onDestroy里加入clear SharedPreferences的代码,关机再次开机依然可以拿到数据。

有其他结合versionCode的方式也不适用,因为并不是升级的场景。

例如:https://blog.csdn.net/wusj3/article/details/78496724

 

最后使用了公司封装的实现,即使用黏性广播判断。具体使用很简单,如普通的Broadcast类似,但StickyBroadcast会在发出后一直滞留,直到有地方注册广播后才会收到。关机之后广播自然会销毁掉。

StickyBroadcast的博客:https://blog.csdn.net/woaieillen/article/details/7376391

 

具体实现:

public static void set(String key, String val) {
	Intent intent = this.registerReceiver(null, new IntentFilter(ACTION));//自定义的ACTION
	if (intent == null)
		intent = new Intent(ACTION);
	intent.putExtra(key, val);
	ctx.sendStickyBroadcast(intent);
}

public static String get(String key) {
	Intent intent = this.registerReceiver(null, new IntentFilter(ACTION));
	if (intent != null)
		return intent.getStringExtra(key);
	return null;
}

注意需要加入权限 android.permission.BROADCAST_STICKY,并不要存储太块的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值