#flutter
Вопрос:
У меня есть довольно большое приложение, которое я создаю в Flutter как для Android, так и для iOS.
В настоящее время у меня проблема, из-за которой приложение полностью перезапускается при повороте устройства, только на Android. На iOS это работает нормально?
Я попытался посмотреть, делает ли он то же самое в приложении счетчика по умолчанию, но оно вращается и сохраняет состояние в порядке.
Я не могу воспроизвести проблему в приложении счетчика по умолчанию.
Я взглянул на манифест, чтобы посмотреть, нет ли там чего-нибудь странного, но для меня все выглядит нормально, я видел, что android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
тег изменений отсутствует, поэтому я повторно добавил его, но безрезультатно?
Я понятия не имею, почему мое приложение будет нормально работать на iOS, но не на Android? Исходя из собственного разработчика Android, я знаю, что Android может быть немного неудобно обрабатывать вращения.
У кого-нибудь есть какие-нибудь идеи, с чего я могу начать поиски преступника?
AndroidManifest.xml
<application
android:label="Some app"
android:icon="@mipmap/ic_launcher"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:networkSecurityConfig="@xml/network_security_config">
<activity
android:name=".MainActivity"
android:hardwareAccelerated="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.network-policy"
android:resource="@xml/network_security_config" />
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" />
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
Основная активность.тыс. т
package com.someapp.app
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
}
Трепещущий Доктор:
❯ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.3, on Mac OS X 10.15.7 19H1217 darwin-x64, locale en-ZA)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] IntelliJ IDEA Community Edition (version 2020.2.3)
[✓] VS Code (version 1.58.2)
[✓] Connected device (3 available)
• No issues found!
Комментарии:
1. Похоже, что приложение на самом деле не просто «перезапускается», а выходит из строя, а затем перезапускается. Неужели вы ничего не можете почерпнуть из журналов?
2. нет, в журналах нет никаких сбоев. Что странно, так это то, что это происходит только на Android, а не на iOS. Так что теоретически, разве это не повредило бы обеим экосистемам