- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Android java 项目中有一个主类,其中定义了所有函数。然后我有另外 2 个类扩展主类并实现 Runnable。
X
,我在文件 2 中修改了该变量。Y
,我在文件 3 中修改了该变量。在主类中,我启动了 2 个线程:一个用于 Class2,一个用于 Class3。
当我尝试从主类调用Class2.X
时,无论如何它总是null
。我尝试过 volatile
、synchronized(thread)
、getvalue()
等,但它不起作用。
我应该如何读取 Class2.X
的值,使其在主类中不为 null?
这是代码:
Thread t = new Thread(new Functionss(mRgbImage));
t.start();
Thread t2 = new Thread(new Functionss_2(mRgbImage));
t2.start();
if(boolean_variable)
{
try {
Thread.sleep(30000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Bitmap final_added =addition(mRgbImage2, mRgbImage3);
mImageView.setImageBitmap(final_added);
mRgbImage2
和 mRgbImage3
是static volatile
变量。
事实上,我认为这不是变量的问题,因为当我在主类中使用图像并修改它,然后执行mImageView.setImageBitmap(initial_image)
时,我仍然得到一个我的 Android 手机黑屏。
我在 logcat 中注意到以下内容:
Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40a34d28
如果我删除线程,就不会收到此错误。
有什么帮助吗?
最佳答案
我怀疑您的线程从未执行赋值语句或正在分配不同的值或其他内容。也许放置一些日志消息或调试您的应用程序并在分配处放置断点会有所帮助。
如果你有类似的东西:
public class MainClass {
Class2 class2 = new Thread(new Class2());
class2.start();
class2.join();
// Class2.value will == 10 here
}
然后:
public class Class2 implements Runnable {
public static volatile int value;
public void run() {
...
this.value = 10;
...
}
}
然后,在Class2
中进行分配后,值
将 已更新。这显然是一个简单的示例,我怀疑您的代码中的 Class2 线程实际上尚未完成,但只要完成分配,那么 value
就会 已更改。同样,日志消息或调试器在这里会有所帮助。
最好有类似以下模式的内容:
public class Class2 implements Runnable {
private volatile int value;
public void run() {
...
this.value = 10;
...
}
public int getValue() {
return this.value;
}
}
这样,MainClass
就可以毫无困惑地访问 Class2
和 Class3
中的值。请注意,您仍然需要 volatile
关键字,因为该值是从不同的线程获取/设置的。
希望这里有帮助。如果您编辑问题并提供更多详细信息,我也许可以提供更多帮助。
关于java - Windows 已聚焦 - 忽略多线程后的焦点增益,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079584/
我是一名优秀的程序员,十分优秀!