我想知道我解决特定问题的方法是否是线程安全的(可能不是,这就是我要问的原因)。假设我们有这段代码,在非 UI 线程上运行:
if (myMap != null)
{
runOnUiThread(new Runnable()
{
@Override
public void run()
{
Something something = myMap.get(someKey);
// update some views and stuff
}
});
}
我猜我无法保证 myMap 在可运行对象实际执行时有效,对吧?如果是这种情况,我应该将 myMap != null 移动到 run() 方法中还是只在那里复制它?如果我想确保仅当映射不为空时才执行 runOnUiThread 代码,最好的方法是什么?
谢谢
最佳答案
这就像在执行您提供的代码之前定义 myMap 一样简单:
Map<String, String> myMap = new Hashmap<String, String>();
//if (myMap != null)
// {
runOnUiThread(new Runnable()
{
@Override
public void run()
{
Something something = myMap.get(someKey); //myMap won't be null
// update some views and stuff
}
});
// }
如果你想检查里面是否有任何数据,那么你可以使用size()方法
if(myMap.size() != 0) {
//do your stuffs
}
关于java - Android runOnUiThread线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18056333/