Почему белый экран застревает после заставки в ionic 4? - PullRequest
0 голосов
/ 10 февраля 2019

Я запускаю ionic cordova run android для моего проекта Ионического Кордова.В настоящее время мой мобильный телефон подключен к компьютеру через USB.поэтому, когда я запускаю эту команду, она устанавливает приложение на моем реальном устройстве Android Redmi Note 6 PRO.но на самом деле происходит, когда приложение открывается, появляется только белый экран, больше ничего.Сначала он показывает заставку, а затем белый экран навсегда.Почему такое поведение происходит?Я где-то читал, и я думаю, что некоторые люди имели эту проблему из-за ionic 4. Пожалуйста, помогите.

Я собираюсь вставить ссылку для вставки, где отображаются журналы logcat, после того как я нажму на приложение, чтобы открыть его в эмуляторе Android (на эмуляторе Android также отображается белый экран).

Вот оно.https://pastebin.com/nLiY8w0b

Chrome Debugger показывает - https://pastebin.com/EzdyV3Tw

Ответы [ 5 ]

0 голосов
/ 30 апреля 2019

Я также сталкивался с этой проблемой, но в моем случае проблема заключается в маршрутизации по умолчанию.

Когда приложение инициализируется, оно пытается открыть маршрут по умолчанию, который является пустым маршрутом, который далее мы перенаправляем на фактическую работу.В моем случае пустой маршрут был перенаправлен на "/dashboard".

Пример кода

const routes: Routes = [
  {
    path: '',
    redirectTo: 'dashboard',
    pathMatch: 'full'
  },
  {
    path: 'dashboard',
    canActivate: [AuthGuard],
    loadChildren: './home/home.module#HomePageModule'
  },
  { 
    path: 'login',
    loadChildren: './public/login/login.module#LoginPageModule' 
  }
]

В приведенном выше коде мой пустой маршрут перенаправляется на панель мониторинга, где активен [AuthGuard]и он застрял в обращении, поэтому я решил перенаправить его на маршрут, где [AuthGuard] не активен, то есть в моем случае это «/ login».Обновлен код путем перенаправления на вход в систему, где [Authgaurd] не активен.

 const routes: Routes = [
      {
        path: '',
        redirectTo: 'login',
        pathMatch: 'full'
      },
      {
        path: 'dashboard',
        canActivate: [AuthGuard],
        loadChildren: './home/home.module#HomePageModule'
      },
      { 
        path: 'login',
        loadChildren: './public/login/login.module#LoginPageModule' 
      }
 ]

После создания проекта для Andriod приложение запускается успешно.

Justed опубликовал ответ, если у кого-то возникла эта проблематак же, как я на той же проблеме.

0 голосов
/ 02 апреля 2019

Найденное решение.Проблема была в cordova-plugin-android-permissions .На Android 6+ (может быть Android 5 тоже, у меня его нет на моих устройствах) пользователь должен принимать разрешения вручную.В приложении разрешение на запрос выглядит как предупреждение.И это предупреждение автоматически останавливает заставку (даже если вы не скрываете заставку автоматически и еще не вызываете метод скрытия) и отключает анимацию исчезновения.Также этот запрос разрешений нарушил заставку, даже если разрешения уже добавлены.

Поэтому решение состоит в том, чтобы запрашивать разрешения после splashScreen.hide () после задержки, равной тайм-ауту затухания.

пример:
config.xml

<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="FadeSplashScreenDuration" value="1000" />
<preference name="SplashScreenDelay" value="30000" />
<preference name="ShowSplashScreenSpinner" value="false" />
<preference name="AutoHideSplashScreen" value="false" />
<preference name="FadeSplashScreen" value="true" />
<preference name="ShowSplashScreen" value="true" />

В app.components.ts

  initializeApp() {
    this.platform.ready().then(() => {
      setTimeout(() => {
        this.splashScreen.hide();
      }, 1000);
    }
  }

NOTED !!! задержка setTimeout должна быть равна значению параметра FadeSplashScreenDurationв config.xml

Вывод: Приведенный выше код плавно перешел с экрана-заставки, который плавно исчезнет на стартовой странице.Белый экран вообще не отображается.Надеюсь, это будет полезно.

0 голосов
/ 26 февраля 2019

Отладьте ваше приложение и проверьте, не отображается ли приложение с ошибками, застрявшее на белом экране, в основном из-за ошибок в приложении

0 голосов
/ 18 марта 2019

Я решил эту проблему, установив правильные параметры в config.xml

<preference name="AutoHideSplashScreen" value="false" />
 <preference name="SplashScreenDelay" value="10000" />
 <preference name="FadeSplashScreenDuration" value="1000" />
 <preference name="SplashScreen" value="screen" />
 <preference name="ShowSplashScreen" value="true" />
 <preference name="ShowSplashScreenSpinner" value="false" />
 <preference name="SplashShowOnlyFirstTime" value="false" />
 <preference name="FadeSplashScreen" value="true" />

Затем на моем platform.ready() instruction all I do is Splashscreen.hide();

и после этого запустите проект на Android с помощью

ionic cordova run android
0 голосов
/ 24 февраля 2019

Поместите это в ваш файл config.xml

<preference name="ScrollEnabled" value="false" />
<preference name="android-minSdkVersion" value="19" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="AutoHideSplashScreen" value="false" />
<preference name="SplashScreenDelay" value="3000" />

, затем выполните эту команду: ionic cordova build android здесь будет сгенерирован файл apk: your_project_folder / platform / android / app/build/outputs/apk/debug/app-debug.apk

Это должно работать без зависания белого экрана после заставки

...