Android 如何提高本机应用程序的启动时间?

Android 如何提高本机应用程序的启动时间?,android,ios,react-native,performance,Android,Ios,React Native,Performance,我已经发布了一个IOS和Android应用程序 但该应用程序的启动时间约为5秒 我检测到它需要大约5秒钟来加载Routes中的第一个屏幕 app.tsx代码如下: import React, {useEffect} from 'react'; import configureStore from './Store'; import {SafeAreaProvider} from 'react-native-safe-area-context'; import {Provider} from 'r

我已经发布了一个IOS和Android应用程序

但该应用程序的启动时间约为5秒

我检测到它需要大约5秒钟来加载Routes中的第一个屏幕

app.tsx代码如下:

import React, {useEffect} from 'react';
import configureStore from './Store';
import {SafeAreaProvider} from 'react-native-safe-area-context';
import {Provider} from 'react-redux';
import {PersistGate} from 'redux-persist/es/integration/react';
import {NavigationContainer} from '@react-navigation/native';
import Routes from './configs/Routes';
import {navigationRef} from './services/NavigationService';
import {LocalizationProvider} from './locales/Translation';
import ModalContainer from './modules/ModalGlobal/containers/ModalContainer';
import NetInfoContainer from './containers/NetInfoContainer';
import {
  listenNotificationForeground,
  requestUserPermission,
} from './services/NotificationService';
import axios from 'axios';
import {removeCurrentSession} from './modules/Setting/service/SettingService';
import {UNAUTHORIZED} from './configs/Constants';

axios.interceptors.response.use(
  response => response,
  error => {
    const {status} = error.response;
    if (status === UNAUTHORIZED) {
      removeCurrentSession();
    }
    return Promise.reject(error);
  },
); // User for HTTP code difirrent 200 from axios

const App = () => {
  useEffect(() => {
    let listenBackground: any;
    async function _notificationHandle() {
      await requestUserPermission();
      listenBackground = listenNotificationForeground();
    }
    _notificationHandle();
    return listenBackground;
  }, []);

  return (
    <Provider store={configureStore().store}>
      <PersistGate loading={null} persistor={configureStore().persistor}>
        <SafeAreaProvider>
          <LocalizationProvider>     // Locale language
            <NetInfoContainer />     // Use to show lost connection
            <NavigationContainer ref={navigationRef}>
              <Routes />
            </NavigationContainer>
            <ModalContainer />      // Define global modal to use many routes
          </LocalizationProvider>
        </SafeAreaProvider>
      </PersistGate>
    </Provider>
  );
};

export default App;

import React,{useffect}来自“React”;
从“/Store”导入配置存储;
从“react native safe area context”导入{SafeAreaProvider};
从'react redux'导入{Provider};
从'redux persist/es/integration/react'导入{PersistGate};
从'@react-navigation/native'导入{NavigationContainer};
从“/configs/Routes”导入路由;
从“./services/NavigationService”导入{navigationRef};
从“./locales/Translation”导入{LocalizationProvider};
从“/modules/ModalGlobal/containers/ModalContainer”导入ModalContainer;
从“./containers/netinfo container”导入netinfo容器;
进口{
listenNotificationForeground,
requestUserPermission,
}来自“/services/NotificationService”;
从“axios”导入axios;
从“./modules/Setting/service/SettingService”导入{removeCurrentSession};
从“/configs/Constants”导入{UNAUTHORIZED};
axios.interceptors.response.use(
响应=>响应,
错误=>{
const{status}=error.response;
如果(状态===未授权){
removeCurrentSession();
}
返回承诺。拒绝(错误);
},
); // 来自axios的HTTP代码定义200的用户
常量应用=()=>{
useffect(()=>{
让我们听听背景:任何;
异步函数_notificationHandle(){
等待requestUserPermission();
listenBackground=listenNotificationForeground();
}
_notificationHandle();
返回listenBackground;
}, []);
返回(
//语言环境
//用于显示断开的连接
//定义全局模式以使用多条管线
);
};
导出默认应用程序;
我能改进一下这段代码吗?或者有什么办法来缩短发射时间

多谢各位

您可以使用来优化应用程序的内存使用和性能,请按如下方式使用(在使用
本机屏幕安装后)

您的
android/app/src/main/java//MainActivity.java
需要如下所示:

导入android.os.Bundle;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(null);
}
在条目文件(主要是App.js)中,添加以下内容:

从“react native screens”导入{enableScreens};
启用屏幕(假);

这里有更多信息:

您还应该添加一个启动屏幕(如果您没有),因为当react native加载其依赖项时,在1秒开始时总会有一个空白屏幕。设置启动屏幕将使这一点不被注意


我使用react native splash screen

用于android,通过启用app/build.gradle,您可以在项目开始时消除空白屏幕。Hermes将js代码转换为java代码。如果您退出了发布版apk,那么在启用hermes之后,您只能看到java文件,并且有一个减少应用程序大小的更改。完整的说明和文档请参见

谢谢。我已经使爱马仕能够进行项目。但发射时间不会缩短。谢谢。我已经添加了闪屏。我希望我的回答能有所帮助。我会试试你的建议。我正在使用另一个功能,所以我还没有尝试过。我回复最后的结果。谢谢如果它确实有帮助,请标记为已接受,并向上投票!这很有帮助!:)你好谢谢你的回答。此模块无助于提高加载时间。我还添加到这个项目中。但仍然没有任何改善:(((