ケースによってアンドロイドでもアプリの inactive 状態をチェックする必要がある。React NativeのApp StateではiOSのみinactive状態が確認できるのでアンドロイドのためには、下記のようにコードを追加して使用する。
// app/_layout.tsx import {AppState} from 'react-native'; ... export default function RootLayout() { const appState = React.useRef(AppState.currentState); const [appStateVisible, setAppStateVisible] = useState(appState.current); ... useEffect(() => { const subscription = AppState.addEventListener('change', nextAppState => { appState.current = nextAppState; setAppStateVisible(appState.current); }); return () => subscription.remove(); }, []); useEffect(() => { if (Platform.OS === 'android') { const subscription = AppState.addEventListener('focus', () => { setAppStateVisible('active'); }); return () => subscription.remove(); } }, []); useEffect(() => { if (Platform.OS === 'android') { const subscription = AppState.addEventListener('blur', () => { setAppStateVisible('inactive'); }); return () => subscription.remove(); } }, []); ...
Android で AppState 値が active
、inactive
、background
に変更される事を確認する。
コメント