当我在 android 背景上关闭应用程序时,本机(博览会)崩溃

时间:2021-04-02 05:48:21

标签: react-native expo

嗨~我制作了一个简单的混合应用程序,它运行良好,但是当我在 android 背景下关闭应用程序时(单击汉堡图标并滑动应用程序以关闭),该应用程序无法启动。它只是崩溃,直到重新安装。 Google Play 控制台,我看不到这样的错误消息

java.lang.RuntimeException

java.lang.RuntimeException: Expo encountered a fatal error: ReferenceError: Can't find variable: BackHandler
Q
  at host.exp.exponent.experience.f.o (BaseExperienceActivity.java:7)
  at host.exp.exponent.experience.a.run (Unknown Source:2)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:223)
  at android.app.ActivityThread.main (ActivityThread.java:7700)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:592)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:952)

这是我的应用代码

App.js

import React, { Component } from 'react';
import { BackHandler } from 'react-native';
import { WebView } from 'react-native-webview';
import { StatusBar } from "react-native";
import * as SplashScreen from 'expo-splash-screen';
import ProgressWebView from "react-native-progress-webview";

function sleep (ms) {
  return new Promise(
    resolve => setTimeout(resolve, ms)
  );
}

async function delay_splash() {
  await SplashScreen.preventAutoHideAsync();
  await sleep(3000);
  await SplashScreen.hideAsync();    
};

export default class WebViewMoviezSpace extends Component {
  constructor(props) {
    super(props);
    this.WEBVIEW_REF = React.createRef();
  }

  componentDidMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButton);
  }

  componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton);
  }

  handleBackButton = ()=>{
    this.WEBVIEW_REF.current.goBack();
    return true;
  }

  onNavigationStateChange(navState) {
    this.setState({
      canGoBack: navState.canGoBack
    });
  }

  render(){
    delay_splash();
    return (
      <>
      <StatusBar backgroundColor="#F4F6FA" barStyle="dark-content" /> 
      <ProgressWebView
        source={{ uri: "http://34.64.168.91/" }}
        ref={this.WEBVIEW_REF}
        onNavigationStateChange={this.onNavigationStateChange.bind(this)}
      />
      </>
    )
  }
}

app.json

{
  "expo": {
    "name": "미스터스탁",
    "slug": "mrstock_app",
    "version": "1.0.2",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "primaryColor":"#f74172",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "cover",
      "backgroundColor": "#1f1f1f"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "web": {
      "favicon": "./assets/favicon.png"
    },
    "ios": {
      "bundleIdentifier": "com.mrstock.mrstockapp",
      "buildNumber": "1.0.6",
      "supportsTablet": false,
      "config": {
        "usesNonExemptEncryption": false
      }

    },
    "android": {
      "package": "com.mrstock.mrstock",
      "versionCode": 5,
      "permissions": ["WRITE_SETTINGS"] 
    }
  }
}

谢谢!

0 个答案:

没有答案