Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ART以及ART相关库react-native-progress的Android问题 #89

Closed
flingInTheSky opened this issue Dec 1, 2018 · 12 comments
Closed

ART以及ART相关库react-native-progress的Android问题 #89

flingInTheSky opened this issue Dec 1, 2018 · 12 comments
Labels
新需求 New feature or request

Comments

@flingInTheSky
Copy link

问题描述:
1、打开一个页面,页面使用了ART画的一个图形;
2、保持在该页面,让Android手机自动息屏,息屏后1分钟打开手机,发现该页面的ART画的图形不见了。
3、同时也测试了react-native-progress这个使用ART的库,存在同样的问题。

不知道有没有办法解决这个问题,因为ART是个很重要的模块。会不会是0.54的React-native的版本问题?

@flingInTheSky
Copy link
Author

测试使用手机:小米5X

@laohuang88 laohuang88 added the 新需求 New feature or request label Dec 3, 2018
@halloaw
Copy link

halloaw commented Dec 4, 2018

facebook/react-native#17565 这个 issue 提到了这是 RN 的一个 bug。而这个评论 facebook/react-native#17565 (comment) 提到 react-native-svg 这个库没有这样的问题。刚好 miot 也引入了这个库。但是引入的版本为 6.3.0,Animated 相关操作没有生效,测试了一下版本号 7.1.0 以上 Animated 可以正常使用。是否考虑更新一下 react-native-svg 的版本?:eyes:

Demo:

import React from 'react';
import { View, StyleSheet, Dimensions, Animated } from 'react-native';
import Svg, { Circle, G, Rect } from 'react-native-svg';

const AnimatedG = Animated.createAnimatedComponent(G);
const { width, height } = Dimensions.get('window');

export default class SvgExample extends React.Component {
  state = {
    x: new Animated.Value(0),
  };

  componentDidMount() {
    Animated.timing(this.state.x, {
      duration: 1000,
      toValue: 100,
    }).start();
  }

  render() {
    return (
      <View style={[StyleSheet.absoluteFill, { alignItems: 'center', justifyContent: 'center' }]}>
        <Svg
          height={height * 0.5}
          width={width * 0.5}
          style={{
            borderWidth: 1,
            borderStyle: 'solid',
            borderColor: 'red',
          }}
        >
          <AnimatedG x={this.state.x}>
            <Circle cx="50" cy="50" r="45" stroke="blue" strokeWidth="2.5" fill="green" />
            <Rect x="15" y="15" width="70" height="70" stroke="red" strokeWidth="2" fill="yellow" />
          </AnimatedG>
        </Svg>
      </View>
    );
  }
}

@UnaMattinaDev
Copy link

同样有遇到Android使用ART渲染文字,第一次渲染位置不正确的问题。

@dingshaoran
Copy link

ReactNative的 bug, 您可以监听 Package.packageDidResume 当米家从后台回到前台会有这个回调,在回调里 forceUpdate()

@halloaw
Copy link

halloaw commented Dec 12, 2018

@dingshaoran forceUpdate 没有效果。使用 setState 做测试,packageDidResume 回调慢的话,会导致用户可以看到 ART 绘制的图形从无到突然出现的情况。图形大的话体验就比较糟糕了。这种情况经常出现(或许是我机子有点差🤕?)。

@mirse
Copy link

mirse commented Jan 3, 2019

@dingshaoran forceUpdate 没有效果。使用 setState 做测试,packageDidResume 回调慢的话,会导致用户可以看到 ART 绘制的图形从无到突然出现的情况。图形大的话体验就比较糟糕了。这种情况经常出现(或许是我机子有点差🤕?)。

想问下 最后时怎么解决的?

@lvjie0519
Copy link
Contributor

lvjie0519 commented Mar 7, 2019

使用sdk 10001分支的最新apk,及最新的sdk,还存在如上问题吗?我这边手机无法复现,Android6.0

@mirse
Copy link

mirse commented Mar 11, 2019

使用sdk 10001分支的最新apk,及最新的sdk,还存在如上问题吗?我这边手机无法复现,Android6.0

分支与原先的sdk有什么区别吗?

@mirse
Copy link

mirse commented Mar 11, 2019

使用sdk 10001分支的最新apk,及最新的sdk,还存在如上问题吗?我这边手机无法复现,Android6.0

经测试,在Android8.1.0上还是存在息屏后开启,ART图形不显示的问题

@lvjie0519
Copy link
Contributor

lvjie0519 commented Mar 12, 2019

@mirse ART在部分手机上确实存在不显示问题,尝试其他RN版本问题同样存在,建议使用svg来替代ART,我这边使用小米5X及其他版本手机,svg没出现显示问题。

@xuanxuandaoren
Copy link

MAX2,vivo X9,OPPO A5都存在这种情况 因为要画很多图用 要用到 Group 目前用 svg 不知道如何替代

@mirse
Copy link

mirse commented May 8, 2019

请问有解决方法吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
新需求 New feature or request
Projects
None yet
Development

No branches or pull requests

8 participants