前言

创作过程:2020年5月22下午4点左右开始写,晚上9点55写下尾声。晚上11点-12点补充第五、第六部分。

有段时间没写文章了,这次不是因为懒…而是的确很忙,最近在重构项目里的一个重要模块。

搞起来真的酸爽,为了策应其他组的模块化,重构的时候也进行了我们的模块化处理,混乱的依赖也是x了狗了…

今天的文章内容是关于ViewPager的,很多同学可能会吐槽:怎么还写这种“低级”的内容!为什么?因为绝大多数的同学都用错了,当然这主要的原因是搜索引擎推出来的文章大多都是错的!

正文

一、错误用法

不知道有多少同学是这样用ViewPager的?

class TestViewPagerActivity : BaseActivity() {private lateinit var adapter: ViewPagerAdapterprivate val fragments = mutableListOf<Fragment>().apply {add(TestFragment1.newInstance("页面-1")add(TestFragment2.newInstance("页面-2"))add(TestFragment3.newInstance("页面-3"))}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_test_view_pager)adapter = ViewPagerAdapter(fragmentData, supportFragmentManager)vp.adapter = adapter}inner class ViewPagerAdapter(val fragments: List<Fragment>, fm: FragmentManager) : FragmentPagerAdapter(fm) {override fun getItem(position: Int): Fragment {return fragments[position]}override fun getCount(): Int {return fragments.size}}
}

如果看到这的同学觉得这个用法没什么问题。那么毫无疑问这篇文章你必须要读一读,因为上述的用法完全曲解的Fragment在ViewPager中的应用。

二、正确用法

我猜有同学可能有疑问了,那正确用法是什么样呢?

当然有同学反驳:凭什么你说你的写法是对的呢?这还用问吗?还不是因为我大!!!…Google的文档了:ViewPager

class TestViewPagerActivity : BaseActivity() {private lateinit var adapter: ViewPagerAdapteroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_test_view_pager)adapter = ViewPagerAdapter(fragmentData, supportFragmentManager)vp.adapter = adapter}inner class ViewPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {override fun getItem(position: Int): Fragment {return when (position) {0 -> TestFragment1.newInstance("页面-1")1 -> TestFragment2.newInstance("页面-2")else -> TestFragment3.newInstance("页面-3")}}override fun getCount(): Int {return 3}}
}

大家看出这俩种用法的不同了吗?没错不同点只在于getItem()方法的实现。搞懂getItem()的调用,也就搞懂了Fragment在ViewPager里的正确用法。所以接下来咱们直接上源码直观感受ViewPager的设计 。

三、FragmentPagerAdapter源码

ViewPager对Fragment的支持非常的简单,整体流程:

    1. setAdapter时会基于当前position进行初始化当前Fragment
    1. 接下来会基于mOffscreenPageLimit的值对需要“预加载”的Fragment进行初始化
    1. 初始化该初始化的Fragment之后,调用commit()通知FragmentManager去attach Fragment

这3步走完,我们当前的Fragment就已经出来了。

接下来咱们通过源码来具体理解一下上述的1、2、3这几个步骤。

当我们setAdapter时,会走到popuate方法:

void populate(int newCurrentItem) { // ViewPager中// ....// 基于当前position的位置判断Item(Fragment)是否存在来决定,是否要初始化当前的Fragmentif (curItem == null && N > 0) {// 而这里会走到instantiateItemcurItem = addNewItem(mCurItem, curIndex);}// 初始化当前之后,会基于limit,初始化该预加载的....// 此方法在FragmentPagerAdapter中会调用fm的commitmAdapter.finishUpdate(this);
}/*** 这里会调用instantiateItem(),这里真正的实现在FragmentPagerAdapter里*/
ItemInfo addNewItem(int position, int index) {ItemInfo ii = new ItemInfo();ii.position = position;ii.object = mAdapter.instantiateItem(this, position);ii.widthFactor = mAdapter.getPageWidth(position);if (index < 0 || index >= mItems.size()) {mItems.add(ii);} else {mItems.add(index, ii);}return ii;
}

一直走到这,我们才看到FragmentPagerAdapter对Fragment初始化的控制:

public Object instantiateItem(@NonNull ViewGroup container, int position) {if (mCurTransaction == null) {mCurTransaction = mFragmentManager.beginTransaction();}// 基于position找到itemId,这方法的默认实现就是positionfinal long itemId = getItemId(position);// 生成一个tagString name = makeFragmentName(container.getId(), itemId);// 通过上边生成的tag,在fragmentManager中试图找到一个Fragment的实例Fragment fragment = mFragmentManager.findFragmentByTag(name);// 如果找到,直接调用attachif (fragment != null) {if (DEBUG) Log.v(TAG, "Attaching item #" + itemId + ": f=" + fragment);mCurTransaction.attach(fragment);} else {// 否则调用getItem(),基于我们自己的实现拿到Fragment实例。fragment = getItem(position);if (DEBUG) Log.v(TAG, "Adding item #" + itemId + ": f=" + fragment);mCurTransaction.add(container.getId(), fragment,makeFragmentName(container.getId(), itemId));}if (fragment != mCurrentPrimaryItem) {fragment.setMenuVisibility(false);if (mBehavior == BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {mCurTransaction.setMaxLifecycle(fragment, Lifecycle.State.STARTED);} else {fragment.setUserVisibleHint(false);}}return fragment;
}

代码的注释详细的说明了FragmentPagerAdapter如果基于当前position进行初始化Fragment的逻辑。简单再梳理一遍:

  • 基于一套规则生成的tag,通过findFragmentByTag()来找是否已经生成过Fragment。
  • 如果没有,调用getItem(),拿到我们自己重写后return的Fragment实例。

因为以上的流程,我们可以明确开篇第一种用法一定错误的!因为从源码我们可以get到一个信息:对于Adapter来说,只有FragmentManage中找不到Fragment实例时才会调用getItem()去初始化Fragment。因此这其实是一种常见的懒加载机制。

而开篇第一种写,在初始化的时候就把所有Fragment都new了一遍,很明显是无意义的!因为如果我们ViewPager有3个Fragment,用户不滑到第3个Fragment,那么new这个Fragment就是浪费的。

接下来咱们再聊一聊第2步中的mOffscreenPageLimit,有经验的老铁们都知道这个是用于预加载的,而且这个值最低是1。populate()方法中基于mOffscreenPageLimit来决定预加载position左右俩边多少个Fragment,1就意味着左右各预加载1个。

由于mOffscreenPageLimit最小是1的原因,所以我们一次至少要加载2个Fragment。而有时我们又偏偏需要在滑动到某个Fragment的时候再执行一些数据加载的操作。

在面对这种场景下,我们一般都会用onHiddenChanged()/setUserVisibleHint()等方法来尝试做可见性的逻辑回调。其实如果项目中的fragment库版本较新的时候会发现系统提供了更方便且优雅的方式。

四、更优雅的滑动到当前Fragment时加载数据

新版本下的fragment,在使用FragmentStatePagerAdapter,我们会发现默认的构造方法是过时的:

@Deprecated
public FragmentStatePagerAdapter(@NonNull FragmentManager fm) {this(fm, BEHAVIOR_SET_USER_VISIBLE_HINT);
}

会发现系统在构造函数中增加了第二个参数,除了默认BEHAVIOR_SET_USER_VISIBLE_HINT的,系统还提供了BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT。而这个行为和它的名字一样,只有在滑动这个Fragment上时才会调这个Fragment的onResume()方法。

但是注意是回调onResume()。而onResume之前的方法,已经在getItem()中实例化Fragment的时候调完了。

因此我们仅仅想在当前Fragment可见的时候做初始化操作,可以直接使用BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT。

五、getItemPosition()滥用

前段时间在公司项目中,看到有小伙伴重写了getItemPosition()方法:

public int getItemPosition(@NonNull Object object) {return POSITION_NONE;
}

这么写有没有问题?说有也有,说没有也没有!为什么这么模棱两可的回答呢?因此这个方法很特殊。

这个方法的注释是这么说的:return POSITION_UNCHANGED时,意味着当前视图没有发生改变,return POSITION_NONE意味着发生改变。注释可能有些抽象,咱们结合源码来理解这个方法。

这个方法只会在ViewPager的dataSetChanged()中被调用,因此我们可以确认重写这个方法只会在主动尝试更新ViewPager时生效。

void dataSetChanged() {// for循环所有Fragment,然后基于getItemPosition()返回值判断是否需要removefor (int i = 0; i < mItems.size(); i++) {final ItemInfo ii = mItems.get(i);final int newPos = mAdapter.getItemPosition(ii.object);if (newPos == PagerAdapter.POSITION_UNCHANGED) {continue;}if (newPos == PagerAdapter.POSITION_NONE) {// 可以看到,如果是POSITION_NONE,就会remove当前i下的Fragment// 省略部分代码mItems.remove(i);          mAdapter.destroyItem(this, ii.position, ii.object);}// 省略部分代码}// 省略部分代码// 此方法中会再次调用populate()去重新走初始化的操作setCurrentItemInternal(newCurrItem, false, true);
}

有了上述源码的逻辑,其实我们就能够明白getItemPosition()的意义:当我们想使用notifyDataSetChanged()去刷新ViewPager时,getItemPosition()的返回时决定当前的Fragment是否需要被remove。因此当我们不需要remove当前的Fragment时,则return POSITION_UNCHANGED(这样此Fragment就不会发生任何状态变化),否者则return POSITION_NONE(这样此Fragment就会被remove,然后重新初始化新的Fragment)。我们就可以做出类似于RecyclerView的diff操作。

基于自身产品逻辑,合理的重写getItemPosition(),避免不必要Fragment的销毁重建。

六、如何主动get到ViewPager的Fragment实例

我们都知道,FragmentManager为我们提供了findFragmentById()/findFragmentByTag()。同样对于ViewPager也是如此,在第三部分源码分析的时候,我们知道FragmentPagerAdapter中获取也是通过findFragmentByTag()尝试获取当前Fragment的实例,而tag的实现来自makeFragmentName(container.getId(), itemId)

private static String makeFragmentName(int viewId, long id) {return "android:switcher:" + viewId + ":" + id;
}

所以,我们获取ViewPager中的Fragment也可以借助这种方式。千万不要像搜索引擎里推出的那些答案:**主动调用什么getItem()!**有了上边源码的分析,我猜大家已经get到这些用法错的是多么离谱!!!

尾声

OK,本次想聊的就是这么多~以后的文章,我会力求在绝对正确的情况下再发出来,尽可能的不要误人子弟!

毕竟就今天的ViewPager而言,其实我一开始也是用那种错误的写法,没错,就是受搜索引擎推出来的错误文章所误导!

既然自己踩过坑,争取能填上一个是一个!

我是一个应届生,最近和朋友们维护了一个公众号,内容是我们在从应届生过渡到开发这一路所踩过的坑,以及我们一步步学习的记录,如果感兴趣的朋友可以关注一下,一同加油~

个人公众号:咸鱼正翻身

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. python,range()

    用法,range(起点,终点) for i in range(1,5):print(i)输出结果: 1 2 3 4用range()可以生成列表 list = list(range(1,5))print(list)输出结果: [1, 2, 3, 4]range(),可以规定步长 用法,range(起点,终点,步长) for i in range(0,11,2):print(i)输出结果: 0 2 4 6 8 10将1-…...

    2024/4/27 13:55:27
  2. 实现LRU偷懒做法

    自己实现一个LRU 做法:利用LinkedHashMap实现 import java.util.LinkedHashMap; import java.util.Map;public class CacheLRU {private Map<Integer,Integer> map;private final int CAPACITY;public CacheLRU(int CAPACITY){this.CAPACITY = CAPACITY;map = new Linked…...

    2024/4/27 18:29:48
  3. tomact端口监听脚本

    @echo offecho tomcat服务监听脚本启动 :loop rem 日志路径 set filepath=D:\shuHuiWorkSpace\ rem 获取当前日期 set yyyy=%date:~,4% set mm=%date:~5,2% set day=%date:~8,2% set "YYYYmmdd=%yyyy%%mm%%day%" rem 把年月日串中的空格替换为0 set data=…...

    2024/4/27 17:26:58
  4. MySQL的四种事务隔离级别,你知道吗?

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一、事务的基本要素(ACID)1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说…...

    2024/4/27 18:11:40
  5. Spring源码解析(一)bean的加载过程

    Bean加载过程概述创建测试模块bean加载过程1.转换对应beanName2.尝试从缓存中加载单例3.bean的实例化4.原型模式的依赖检查5.检测parentBeanFactory6.将存储XML配置文件的GernericBeanDefinition转换成 RootBeanDefinition7.寻找依赖8.针对不同scope进行bean的创建9.类型…...

    2024/4/27 17:44:27
  6. Win10启动和关闭管理员账户

    以管理员身份运行命令提示符 启动: net user administrator /active:yes 关闭: net user administrator /active:no...

    2024/4/27 18:43:26
  7. 解决VScode使用c连接数据库出现异常!!!

    在项目文件中的.vscode/c_cpp_properties.json中的includePath中加入mysql的include和lib路径(注意是双斜杠)。配置完成后在.c文件中使用#include “mysql.h”(注意是用引号)后出现了如下图所示错误时。 可以将#include "mysql.h"改为#include "mysql头文件所…...

    2024/4/27 18:07:09
  8. 线程同步与异步

    一、异步编程模型 假设有两个线程,t1与t2; 异步模型:这两个线程各自执行各自的,t1与t2互不干涉,谁也不需要等谁; 实际上就是多线程并发,效率较高。 二、同步编程模型 假设有两个线程,t1与t2; 同步模型:t1执行前,必须等待t2执行结束; 或t2执行前,必须等待t1执行结束…...

    2024/4/27 15:47:44
  9. 谈即时编译优化-以异常堆栈丢失为例

    前言 日照充足会让西瓜更甜,那拥有即时编译优化会让Java程序怎么样?本文会初步介绍JVM的即时编译优化特性,并且通过异常堆栈丢失这一常见的现象来进行举例 即时编译优化 Java程序在运行初期是通过解释器来执行,当发现某块代码运行特别频繁,就会将之判定为热点代码(Hot Spo…...

    2024/4/27 17:45:05
  10. SN114桑拿114休闲健康网 广州桑拿114

    SN114桑拿114休闲健康网 广州珠三角桑拿114休闲健康网→→→(SN114)为正规信息网站,本站上提供的所有内容(除有注明原创之外)均由网络转载或网友提供,本站只是一个展示方,仅为中国休闲健康、美容等方面的内容服务。 桑拿114欢迎你(桑拿114)...

    2024/4/27 17:59:18
  11. vim 代码自动补全 coc.nvim 以及显示行号,升级

    1 显示行号 vim ~/.vimrc set number 2.vim升级 sudo add-apt-repository ppa:jonathonf/vim sudo apt-get update sudo apt-get install vim3.coc.nvim安装 3.1安装vim-plug 去 https://github.com/junegunn/vim-plug 按照步骤做就行。如果报错,自己可以把 plug.vim 复制到 …...

    2024/4/24 6:29:30
  12. SpringBoot和SpringCloud版本关系

    1.查看最新的springboot版本https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent2.查看最新的springcloud版本https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies3.版本的对应关系springcloud和sp…...

    2024/4/24 6:29:33
  13. c#求最大公约数的最小公倍数

    using System; namespace ConsoleApp1 {class Program{//获取最大公约数static int GetLarge(int n1, int n2) //先用辗转相除法求最大公因数{int max = n1 > n2 ? n1 : n2;int min = n1 < n2 ? n1 : n2;int temp;while (min != 0){temp= max % min;max = min;min = t…...

    2024/4/27 16:19:19
  14. 快速排序算法C实现

    快速排序是大规模递归的算法,它比大部分排序算法都要快。一般用于数据个数比较多的情况。尽管可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。 #include <stdi…...

    2024/4/27 19:44:24
  15. 二维码登录实现思路

    实现简易的二维码登录效果 首先我们要明白二维码登陆原理是什么? 网上关于原理的叙述已经很多了,在这里就不过多叙述,这里主要以实战为主 实现思路PC端发送一个二维码的请求,服务器生成一个UUID,加上自己的密钥,在md5一下(这里MD5没有必要,可以用公司自己的密钥算法生成…...

    2024/4/27 13:36:20
  16. leetcode经典题目:palindrome-partitioning-ii

    题目: 给出一个字符串s,分割s使得分割出的每一个子串都是回文串 计算将字符串s分割成回文分割结果的最小切割数 例如:给定字符串s="aab", 返回1,因为回文分割结果["aa","b"]是切割一次生成的。思路:动态规划、dp方程 dp[i]:表示字串(0,i)…...

    2024/4/27 17:58:13
  17. MySQL基础查询

    select 字段1,字段2(名字)… from 表名(只可以一个) 起别名两种方法 ① select 字段名 as 别名 from 表; ② …(空格) 别名 from 表; 只是改变显示的固有名字,实际表不会更改 SELECT name,id,age AS “年纪” FROM second; 只改变age不改变其它 “+” 只能用来…...

    2024/4/27 14:40:00
  18. 重装谷歌浏览器chrome:未知错误导致安装失败

    是因为卸载chrome不彻底其中一种解决方法是通过电脑管家(或者其它安全管家)来安装,在电脑管家的软件管理中搜索谷歌浏览器直接安装...

    2024/4/16 22:40:10
  19. 组件案例-评论列表(涉及父子组件之间的通信)

    JS代码 主要业务逻辑写在代码注释中 <!DOCTYPE html> <html lang="en"> <head><meta charset="utf-8"><title></title><script type="text/javascript" src="js/vue.js"></script>&l…...

    2024/4/16 22:39:46
  20. 医学领域深度学习模型训练的挑战

    2020-05-18 21:29:24在医学数据集的训练算法期间面临的许多问题中,这三个最常见:类别不均衡多任务数据集大小 对于这些问题,我将分享一些解决问题的技术。类别不均衡挑战在现实世界中,我们看到的健康人比患病的人要多得多,这也反映在医学数据集中。健康和患病类别的例子数…...

    2024/4/15 7:32:02

最新文章

  1. matplotlib 安装失败:Failed building wheel for matplotlib 解决方案

    Python | Failed building wheel for matplotlib 朋友遇到 python 安装 matplotlib 时的问题&#xff0c;笔者帮忙远程调试(踩了不少坑)。网上的解决方案有很多无效&#xff0c;以此来记录以下个人解决方案。 在使用指令 pip install matplotlib出现如下报错&#xff1a; “…...

    2024/4/27 19:55:58
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【Easy云盘 | 第十三篇】分享模块(获取目录信息、获取文件信息、创建下载链接)

    文章目录 4.4.7获取目录信息4.4.8获取文件信息4.4.9创建下载链接 4.4.7获取目录信息 明天做 4.4.8获取文件信息 明天做 4.4.9创建下载链接 明天做...

    2024/4/26 15:10:14
  4. ntp服务器搭建

    1、手动修改时区 CST可以为如下4个不同的时区的缩写&#xff1a; 美国中部时间&#xff1a;Central Standard Time (USA) UT-6:00 澳大利亚中部时间&#xff1a;Central Standard Time (Australia) UT9:30 中国标准时间&#xff1a;China Standard Time UT8:00 古巴标准时间&a…...

    2024/4/25 1:36:26
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/26 21:56:58
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/26 22:01:59
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57