java – 如何传递或分配在runOnUiThread中获取的值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何传递或分配在runOnUiThread中获取的值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1170字,纯文字阅读大概需要2分钟。
内容图文
在WebView的子类中,我在getTitle()的重写方法中有这个:
@Override
public String getTitle() {
Activity a = getVoTts().getActivity();
a.runOnUiThread(new Runnable() {
public void run() {
String tit = VoWebView.super.getTitle();
}
});
String title = tit; // this is what I WANT to do, it won't compile of course
...
...
}
但是String tit在一个匿名的Runnable类中关闭,因此当然无法访问该方法.
是否有任何技术或“技巧”允许我将匿名Runnable类中获得的值传递给行中的语句(在同一方法中)或将其分配给数据成员?
解决方法:
一种方法是声明一个实例字段并在整个类中使用它.例如:
private String someText;
// ...
@Override
public String getTitle()
{
Activity a = getVoTts().getActivity();
a.runOnUiThread(new Runnable()
{
public void run()
{
someText = VoWebView.super.getTitle();
}
});
}
编辑:
关于为什么必须将局部变量声明为final(或者换句话说,编译时间常量)的原因:
想象一下,以下内容在Java中是有效的:
@Override
public String getTitle()
{
Foo f = new Foo();
Button b = getButtonReference();
b.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Boo o = f.someMethod();
}
});
f = null;
}
在f = null时,foo对象将有资格进行垃圾回收.因此,如果单击该按钮,则VM调用foo对象上的someMethod()为时已晚,因为它是垃圾收集的!
内容总结
以上是互联网集市为您收集整理的java – 如何传递或分配在runOnUiThread中获取的值全部内容,希望文章能够帮你解决java – 如何传递或分配在runOnUiThread中获取的值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。