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

android在push/present新页面时,原页面Image加载的图片会消失 #193

Open
dppo opened this issue Jul 4, 2021 · 7 comments
Open

Comments

@dppo
Copy link

dppo commented Jul 4, 2021

1625358674701345.mp4

WX20210704-083401
WX20210704-083427
WX20210704-083504

还有一个小问题
Android点击左上角返回按钮进行回退,相比比小米手势直接返回,执行动画有点掉帧
小米手势的返回很顺畅,点击按钮能明显感觉到有点卡顿

@dppo
Copy link
Author

dppo commented Jul 4, 2021

RN版本/hybrid-navigation版本均为当前最新版本

@listenzz
Copy link
Owner

listenzz commented Jul 4, 2021

为什么在 Android 平台,push 到下一个页面时,当前页面的图片会消失?

细心的同学,可能会注意到,在 Android 平台,push 到下一个页面时,当前页面的图片会消失。这是怎么回事呢?

这是由于 React Native 底层使用的图片加载库是 Fresco。Fresco 做了过度优化,会把不可见页面的图片隐藏掉。

相关 issue

推荐使用 FastImage 替换掉 ReactNative 自带的 Image 组件

为了避免误用 Image 组件,可以在 eslintrc 中加入如下规则

module.exports = {
  rules: {
    'no-restricted-imports': [
      'error',
      {
        paths: [
          {
            name: 'react-native',
            importNames: ['Image'],
            message: '请使用 FastImage 替代 Image',
          },
        ],
      },
    ],
  },
}

@listenzz
Copy link
Owner

listenzz commented Jul 4, 2021

@dppo 点击按钮能明显感觉到有点卡顿,可能是由于拦截的缘故。

@dppo
Copy link
Author

dppo commented Jul 4, 2021

@dppo 点击按钮能明显感觉到有点卡顿,可能是由于拦截的缘故。

为什么在 Android 平台,push 到下一个页面时,当前页面的图片会消失?

细心的同学,可能会注意到,在 Android 平台,push 到下一个页面时,当前页面的图片会消失。这是怎么回事呢?

这是由于 React Native 底层使用的图片加载库是 Fresco。Fresco 做了过度优化,会把不可见页面的图片隐藏掉。

相关 issue

推荐使用 FastImage 替换掉 ReactNative 自带的 Image 组件

为了避免误用 Image 组件,可以在 eslintrc 中加入如下规则

module.exports = {
  rules: {
    'no-restricted-imports': [
      'error',
      {
        paths: [
          {
            name: 'react-native',
            importNames: ['Image'],
            message: '请使用 FastImage 替代 Image',
          },
        ],
      },
    ],
  },
}

好的,明白了

@dppo
Copy link
Author

dppo commented Jul 4, 2021

@dppo 点击按钮能明显感觉到有点卡顿,可能是由于拦截的缘故。

但是我代码并没有处理拦截返回的操作只是设置了Navigator.setInterceptor,但是返回时并没有走这个方法啊。

@listenzz
Copy link
Owner

listenzz commented Jul 4, 2021

@dppo 点击按钮能明显感觉到有点卡顿,可能是由于拦截的缘故。

但是我代码并没有处理拦截返回的操作只是设置了Navigator.setInterceptor,但是返回时并没有走这个方法啊。

额,对,是没走。走的是原生通道,照理说不会卡才对。

@dppo
Copy link
Author

dppo commented Jul 4, 2021

@dppo 点击按钮能明显感觉到有点卡顿,可能是由于拦截的缘故。

但是我代码并没有处理拦截返回的操作只是设置了Navigator.setInterceptor,但是返回时并没有走这个方法啊。

额,对,是没走。走的是原生通道,照理说不会卡才对。

在页面有webview时挺明显的,如果直接调用代码返回props.navigator.pop();,就挺顺畅的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants