随记10——Android每隔一段时间就显示欢迎页


女神镇楼

在一个APP的从启动到和用户交互,一般只会见到一次启动页,当App在后台,且内存不足的情况下,application被销毁,再次切到app的时候会再出现一次启动页。So,如果想过一段时间就显示启动页,该怎么办呢?

之前想了一个思路,做了一下测试,觉得还可以。主要思路是:我们定义当app在后台的时间超过3s(可自行定义)的时候,再次打开app的时候就显示启动页,这样就需要在app stop的时候记录一个时间,然后在resume的时候再拿当前时间和记录的时间对比,超过3s就显示。效果如下:



主要工作就是判断app是否在后台,以及在后台的时间。参考链接如下:参考链接

实现方法:

1.在application里定义一个变量记录应用进入后台的时间

2.在BaseActivity中的resume中判断在application中定义的变量是否为默认值,如不是,则判断当前时间跟记录时间的差值,若大于定义时间,则进入欢迎页。在onStop方法中判断app时候进入的后台,如是则记录当前时间,否则则初始化时间。

/**
 * Created by Administrator on 2017/12/14.
 * 每隔一段时间启动欢迎页
 */

public class MyApplication extends Application {

    public static long stopMills;//stop的时间

    @Override
    public void onCreate() {
        super.onCreate();
        stopMills = -1;
        // 注册
        registerActivityLifecycleCallbacks(new MyActivityLifecycleCallback());
    }
}

public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener{



    /**
     * 获取上个界面传过来的数据
     * @param bundle
     */
    public abstract void getParms(Bundle bundle);

    /**
     * 获取布局的id
     */
    public abstract int getLayoutId();

    /**
     * 初始化view
     */
    public abstract void initView();

    /**
     * 进入activity要执行的任务
     */
    public abstract void doTask();

    /**
     * 点击事件
     * @param view
     */
    public abstract void onWidgetClick(View view);

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutId());
        Intent intent = getIntent();
        if (intent != null){
            getParms(intent.getExtras());
        }else{
            getParms(new Bundle());
        }
        ButterKnife.bind(this);
        initView();
        doTask();
    }

    @Override
    protected void onResume() {
        super.onResume();
        //判断是否要显示launcheractivitry
        //间隔时间大于5s时显示
        if (MyApplication.stopMills != -1 && System.currentTimeMillis() - MyApplication.stopMills > 5000) {
            startActivity(LauncherShowActivity.class, null);
            MyApplication.stopMills = -1;
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
//        EventBus.getDefault().register(this);

    }

    @Override
    protected void onStop() {
        super.onStop();
//        EventBus.getDefault().unregister(this);



        if (MyActivityLifecycleCallback.isApplicationVisible()){
            MyApplication.stopMills = -1;
        }else{
            MyApplication.stopMills = System.currentTimeMillis();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    public void onClick(View v) {
        onWidgetClick(v);
    }

    /**
     * 重写startActivity
     * @param class_
     * @param bundle
     */
    public void startActivity(Class<? extends BaseActivity> class_, Bundle bundle){
        Intent intent = new Intent(this, class_);
        if (bundle != null){
            intent.putExtras(bundle);
        }
        startActivity(intent);
    }




}
Demo资源下载链接

不知道为何不能设置0积分下载。嗯,回见。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值