【发布时间】:2018-03-26 13:02:02
【问题描述】:
React Native 移动应用程序在每次点击时运行非常缓慢。
我正在使用 react native v0.40.0 以下是我项目的依赖项。
{
"analytics-react-native": "^1.1.0",
"apisauce": "^0.7.0",
"babel-preset-es2015": "^6.18.0",
"es6-promise": "^4.0.5",
"flow-bin": "^0.36.0",
"geolib": "^2.0.22",
"immutable": "^3.8.1",
"intl": "^1.2.5",
"isomorphic-fetch": "^2.2.1",
"lodash": "^4.17.4",
"lodash.range": "^3.2.0",
"prop-types": "^15.5.10",
"raven-js": "^3.13.1",
"react": "^15.4.2",
"react-native": "^0.40.0",
"react-native-apple-healthkit-rn0.40": "^0.3.2",
"react-native-blur": "^2.0.0",
"react-native-button": "^1.7.1",
"react-native-checkbox": "^2.0.0",
"react-native-code-push": "^1.17.3-beta",
"react-native-datepicker": "^1.4.4",
"react-native-device-info": "^0.10.1",
"react-native-easy-toast": "^1.0.6",
"react-native-fbsdk": "^0.5.0",
"react-native-geocoder": "^0.4.5",
"react-native-gifted-chat": "^0.1.3",
"react-native-global-props": "^1.1.1",
"react-native-image-crop-picker": "^0.15.1",
"react-native-image-picker": "^0.25.1",
"react-native-image-slider": "^1.1.5",
"react-native-keyboard-aware-scroll-view": "^0.2.7",
"react-native-maps": "0.15.2",
"react-native-modal-dropdown": "^0.4.4",
"react-native-popup-menu": "^0.7.2",
"react-native-push-notification": "^2.2.1",
"react-native-radio-buttons": "^0.14.0",
"react-native-router-flux": "3.38.0",
"react-native-segmented-android": "^1.0.4",
"react-native-snap-carousel": "2.1.4",
"react-native-stars": "^1.1.0",
"react-native-swipeout": "^2.2.2",
"react-native-swiper": "^1.5.4",
"react-native-tableview-simple": "0.16.5",
"react-native-vector-icons": "^4.0.0",
"react-native-video": "^1.0.0",
"react-native-zendesk-chat": "^0.2.1",
"react-redux": "^4.4.6",
"recompose": "^0.20.2",
"redux": "^3.5.2",
"redux-thunk": "^2.0.1"
}
我在 android studios 中使用 stacktrace 进行了分析,发现 mqt_js 是每次 UI 点击都需要更多时间的原因之一。你可以查看stacktrace报告here
谁能帮我解决这个性能问题?
【问题讨论】:
-
这些延迟是否发生在您的应用的生产版本中?还是只是开发构建?您是否尝试过使用
redux-logger之类的东西来查看您的所有操作都被触发了? -
它在生产和开发版本中都出现了延迟。我已经在使用
redux-logger。 -
尝试在IOS上使用systrace,它可能会显示一些东西。从(android)的附加痕迹来看,在 UI 线程(全绿色 F)中没有看到丢帧,但在单击后 JS 线程(mqt_js)中似乎有很多工作正在进行。不幸的是,android 上的 systrace 被破坏以提供 JS 线程的详细信息。如果可以的话,附上 ios systrace。
标签: android performance react-native redux stack-trace