You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中检测应用是否为全新启动(非后台恢复)

实现全新启动检测的方案

核心思路

利用缓存目录存储标记文件(清除缓存操作会删除缓存目录下所有内容),结合Application的生命周期判断进程是否为全新创建,以此区分「后台恢复」和「清除缓存后的全新启动」。

具体实现步骤

1. 基于Application生命周期判断进程启动类型

应用进程被彻底销毁后重新启动时,Application.onCreate()会被调用;而从后台恢复时,该方法不会执行。以此为基础,结合缓存标记判断是否为清除缓存后的全新启动。

2. 用缓存目录存储启动标记

在缓存目录下创建一个标记文件,每次进程启动时检查该标记:

  • 标记不存在:说明是清除缓存后的全新启动,执行对应逻辑后创建标记。
  • 标记存在:说明是普通进程重启(未清除缓存)。

代码示例

public class MyApplication extends Application {
    private static final String BOOT_MARK_FILE = "app_boot_mark";

    @Override
    public void onCreate() {
        super.onCreate();
        checkFreshLaunch();
    }

    private void checkFreshLaunch() {
        File cacheDir = getCacheDir();
        File markFile = new File(cacheDir, BOOT_MARK_FILE);

        if (!markFile.exists()) {
            // 清除缓存后的全新启动逻辑
            handleFreshLaunch();
            // 创建标记文件
            try {
                markFile.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else {
            // 普通进程重启逻辑
            handleNormalLaunch();
        }
    }

    private void handleFreshLaunch() {
        Log.d("LaunchCheck", "全新启动(清除缓存后)");
        // 这里写你的全新启动处理逻辑,比如初始化数据、展示引导页等
    }

    private void handleNormalLaunch() {
        Log.d("LaunchCheck", "普通启动(未清除缓存)");
        // 普通启动的处理逻辑
    }
}

3. 精准区分「后台恢复」与「进程重启」

如果需要进一步区分这两种场景,可以在Activity的onCreate()中通过Intent标记判断:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
        // 从后台恢复启动
        Log.d("LaunchCheck", "从后台恢复");
        return;
    }
    // 进程重启后的启动
    Log.d("LaunchCheck", "进程重启启动");
}

方案优势

  • 缓存目录的标记文件会随「清除缓存」操作被删除,完美匹配场景需求。
  • 摆脱SharedPreferences仅能检测首次安装启动的局限性。
  • 实现简单,仅需文件操作和生命周期判断,性能开销极低。

注意事项

  • 部分定制ROM对「清除缓存」的范围有差异,需测试确认缓存目录是否会被清空。
  • 多进程场景下需注意标记文件的读写同步,避免并发问题。

内容的提问来源于stack exchange,提问作者sejn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 08:33:33