Строка состояния APK Android становится белой при перезапуске приложения (React Native/Expo)Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Строка состояния APK Android становится белой при перезапуске приложения (React Native/Expo)

Сообщение Anonymous »

Я столкнулся с постоянной проблемой со строкой состояния в моем приложении React Native, использующем Expo. Строка состояния отображается правильно во время разработки и при первой установке приложения, но становится белой с нечитаемым содержимым после закрытия и повторного открытия APK.
Проблема:
  • ✅ В разработке работает нормально (

    Код: Выделить всё

    npx expo run:android
    )
  • ✅ Работает при первом запуске APK после установки.
  • ❌ Сбой после закрытия приложения и повторного открытия — строка состояния становится полностью белой
  • ✅ Изменение темы вручную позволяет временно исправить ситуацию
Что я пробовал:
  • Использование expo-status-bar со стилем и реквизитами backgroundColor
  • Реализация прослушивателя AppState для определения состояния переднего плана приложения
  • Добавление таймаутов для принудительного обновления строки состояния
  • Контекст темы работает правильно (доказано ручным исправлением темы)

    Вот моя текущая реализация App.tsx:

    Код: Выделить всё

    import { NavigationContainer } from "@react-navigation/native";
    import { StatusBar } from "expo-status-bar";
    import { AppState, Platform, useRef, useEffect } from "react-native";
    import { SafeAreaProvider } from "react-native-safe-area-context";
    import RootNavigator from "./src/navigation/RootNavigator";
    import { ThemeProvider, useTheme } from "./src/shared/contexts/ThemeContext";
    
    const ThemedStatusBar = () => {
    const { isDarkMode, theme } = useTheme();
    const appState = useRef(AppState.currentState);
    
    useEffect(() => {
    const subscription = AppState.addEventListener('change', nextAppState => {
    if (appState.current.match(/inactive|background/) && nextAppState === 'active') {
    if (Platform.OS === 'android') {
    setTimeout(() => {
    // Attempt to force status bar update
    }, 100);
    }
    }
    appState.current = nextAppState;
    });
    
    return () => subscription.remove();
    }, [isDarkMode, theme]);
    
    return (
    
    );
    };
    
    function Main() {
    return (
    
    
    
    
    
    
    );
    }
    
    export default function App() {
    return (
    
    
    
    );
    }
    
    В чем мне нужна помощь:

    Каков правильный подход, чтобы обеспечить правильное сохранение стиля строки состояния при повторном открытии приложения из выключенного состояния? Контекст темы доступен и работает, но строка состояния не инициализируется должным образом при холодном запуске.


Подробнее здесь: https://stackoverflow.com/questions/798 ... ative-expo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»