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

Ionic 5安卓应用最大化或打开通知栏时无响应冻屏问题咨询

问题根因定位

你遇到的两个报错和卡顿现象,和AWS App Sync的前台恢复同步逻辑高度相关,同时也和Ionic 5.x的安卓Activity生命周期回调异常有关:

  • Skip 100 frames, Main thread doing too much work 是因为App Sync默认会在应用切回前台时,自动触发全量离线数据同步、订阅重连、缓存校验三个操作,这三个操作如果没有做异步配置,会直接阻塞主线程,旧版App Sync的安卓端适配没有把这部分逻辑放到工作线程,主线程被占满就会导致冻屏、路由卡顿
  • error activityResumeTrigger: not whiteListed /mainactivity 是Ionic 5.4.16版本的已知bug,安卓平台下第三方插件触发Activity resume回调时,没有被默认加入白名单,App Sync的重连逻辑刚好会触发这个回调校验,进一步加剧主线程阻塞

修复方案

1. 调整AWS App Sync的前台同步配置

找到项目中App Sync的初始化代码,添加以下配置项:

const client = new AWSAppSyncClient({
  url: appSyncConfig.graphqlEndpoint,
  region: appSyncConfig.region,
  auth: {
    type: appSyncConfig.authenticationType,
    apiKey: appSyncConfig.apiKey,
  },
  // 新增以下配置
  offlineConfig: {
    // 关闭自动前台同步,改为按需手动触发
    autoSync: false,
    // 同步逻辑强制放到异步线程执行
    syncThread: 'background',
    // 订阅重连增加延迟,避免和Activity resume逻辑抢占资源
    reconnectInterval: 3000,
  },
  disableOffline: false
});

如果需要保留同步能力,可以监听Ionic的resume事件,延迟2s后再手动触发同步,避免和系统Activity恢复逻辑抢占主线程资源:

import { Platform } from '@ionic/angular';

constructor(private platform: Platform) {
  this.platform.resume.subscribe(async () => {
    setTimeout(() => {
      // 手动触发业务所需的同步逻辑
      client.sync();
    }, 2000);
  });
}

2. 修复Activity白名单报错

在项目的config.xml中添加以下配置,把MainActivity加入resume触发白名单:

<preference name="AndroidResumeWhiteList" value="MainActivity" />

如果上述配置不生效,可以升级Cordova Android平台版本到9.1.0以上,这个白名单报错是Cordova Android 8.x版本的已知问题,和Ionic 5.4.16适配存在冲突。

3. 额外优化项

如果还有卡顿,可以在安卓AndroidManifest.xml中给MainActivity添加硬件加速配置:

<activity android:hardwareAccelerated="true" ... />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:24:00