[开源学习_MeiZhi]首次进入App执行某操作,第二次进入则不再执行

[开源学习__MeiZhi]首次进入App执行某操作,第二次进入则不再执行

源码片段来源: drakeet的MeiZhi 项目.
https://github.com/drakeet/Meizhi

这里写图片描述
这个功能很常见. 这样将功能封装起来看起来不错, 只是有个缺点就是每次不管要不要执行, 都会创建一个Once的匿名对象,有点浪费. 但是这种封装的思想还是不错的.
使用SnackBar的好处就是可以一直停在那个状态, 等待你的操作. 这是Toast的不足之处.

调用代码如下:

 new Once(this).show("tip_guide_6", () -> {
     Snackbar.make(mRecyclerView, getString(R.string.tip_guide), Snackbar.LENGTH_INDEFINITE)
             .setAction(R.string.i_know, v -> {})
             .show();
 });

Once类代码:

/**
 * Created by drakeet on 8/16/15.
 */
public class Once {

    SharedPreferences mSharedPreferences;
    Context mContext;

    public Once(Context context) {
        mSharedPreferences = context.getSharedPreferences("once", Context.MODE_PRIVATE);
        mContext = context;
    }

    public void show(String tagKey, OnceCallback callback) {
        boolean isSecondTime = mSharedPreferences.getBoolean(tagKey, false);
        if (!isSecondTime) {
            callback.onOnce();
            SharedPreferences.Editor editor = mSharedPreferences.edit();
            editor.putBoolean(tagKey, true);
            editor.apply();
        }
    }

    public void show(int tagKeyResId, OnceCallback callback) {
        show(mContext.getString(tagKeyResId), callback);
    }

    public interface OnceCallback {
        void onOnce();
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值