我有两个 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/