Android从ActivityPolicies关闭重启MainActivity加载Admob广告问题
实现代码修改
不需要额外写跨页面手动关闭Activity的逻辑,直接给重启MainActivity的Intent添加任务栈清理标记即可,系统会自动销毁栈内已存在的旧MainActivity实例,新启动的MainActivity会读取刚写入SharedPreferences的广告偏好配置,加载对应类型的广告。
修改后ActivityPolicies页面的非个性化广告按钮逻辑如下:
public void NonPersonalizedAdvertising(View view) //button { SharedPreferences myPreferences = PreferenceManager.getDefaultSharedPreferences(MensajePoliticas.this); SharedPreferences.Editor myEditor =myPreferences.edit(); myEditor.putString("POLITICAS","LEIDO_NOACEPTADO"); myEditor.commit(); // 配置Intent启动标记,清空原有任务栈,销毁旧的MainActivity实例 Intent entrar=new Intent(this,MainActivity.class); entrar.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(entrar); finish(); // 关闭当前ActivityPolicies页面 }
这组标记启动新MainActivity时,会直接清空当前应用任务栈里所有现存的Activity实例,旧MainActivity会正常走onDestroy生命周期被回收,不会留内存泄漏问题,不需要改动之前写的MainActivity跳政策页的逻辑,改这几行就满足需求。
Admob合规性说明
这种操作不违反Admob相关规则:
- 触发重启的原因是用户主动修改了广告隐私偏好,重启是为了加载匹配用户选择的合规广告,属于隐私合规要求下的必要操作,不属于恶意触发的行为
- 只要不是为了刷广告展示量、诱导用户点击故意频繁触发重启,仅在用户做出隐私选择后执行一次重启重载广告,完全符合Admob的政策要求
- 重启后按正常逻辑加载广告即可,不要短时间内连续请求多个广告位、不要做广告点击诱导,就不会触发违规判定。
内容的提问来源于stack exchange,提问作者lina0i0-29
相关产品推荐
相关产品推荐

