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

缓存版Instant App中读取App Link查询参数异常问题

Instant App缓存后丢失Intent Data的解决方案
  • 统一Intent数据获取逻辑
    缓存后的Instant App启动可能不会重新触发onCreate,而是复用已有实例走onNewIntent,因此不能只在onCreate中读取Intent。要在onNewIntent中更新并处理最新Intent:

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent); // 更新当前Activity的Intent为最新请求
        parseIntentParams(intent);
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        parseIntentParams(getIntent());
    }
    
    private void parseIntentParams(Intent intent) {
        if (intent != null && intent.getData() != null) {
            Uri launchUri = intent.getData();
            // 解析所需参数
            String location = launchUri.getQueryParameter("location");
            String lnk = launchUri.getQueryParameter("lnk");
            // 执行对应业务逻辑
        }
    }
    
  • 调整Activity启动模式
    检查Manifest中启动Activity的配置,避免singleInstance/singleTask导致新Intent被拦截。推荐使用singleTop模式,并开启状态保留:

    <activity
        android:name=".MainActivity"
        android:launchMode="singleTop"
        android:alwaysRetainTaskState="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="https" android:host="play.google.com" />
        </intent-filter>
    </activity>
    
  • 强制触发新Intent识别
    可以在启动链接中添加唯一标识参数(比如时间戳&ts=1699999999),让系统判定为新请求,避免复用缓存的旧Intent数据。

  • 排查系统日志
    若问题仍存在,通过adb logcat | grep 你的包名查看Intent传递日志,确认系统是否将新链接的参数正确传递到App中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:34:55