gpt4 book ai didi

android - 静态变量在两个 Activity 之间不起作用

转载 作者:行者123 更新时间:2023-11-29 14:52:48 24 4
gpt4 key购买 nike

我有两个 Activity A 和 B。

public class A extends Activity 
{
....
@Override
protected void onResume()
{
super.onResume();
if(MyStaticVarz.myFlag)
{
MyStaticVarz.myFlag= false;
SomeTask();
}

}

MyStaticVarz.java :

public class MyStaticVarz
{
public static boolean myFLag = false;
}

从 A 到 B 并将 myFlag 更改为 true,例如:

MyStaticVarz.myFlag = true;

然后再次返回到 A,但是在 onResume if(MyStaticVarz.myFlag) 为 false 且 SomeTask() 未达到。

从 A 到 B 就像:

Intent i = new Intent(A.this, B.class);
startActivity(i);

更新SomeTask() 用于更改 A 和 B 中文本的字体大小。

myFlag 用于按需重新初始化 UI,如果字体设置更改,则运行 SomeTask()。

当单击 B 中的选项菜单并更改字体大小并转到 B 时,我看到更改,但是当返回 A 时,文本字体大小没有发生。

可能重要:当我回到 A 并且字体大小不正确并且 myFlag 也为 false 时,如果我更改方向,文本字体大小正常但 myFlag 再次为 false!

最佳答案

如果您从不同的线程访问“myFlag”变量,每个线程都可能有一个本地存储的副本,因此不同线程可能不会立即看到变量值的更改。

将您的变量定义为 volatile 以强制所有线程看到相同的副本:

public static volatile boolean myFLag = false;

参见 this nice answer更详细的解释

关于android - 静态变量在两个 Activity 之间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13329476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com