我想减少以下代码行。没有必要声明该类,然后创建它的实例以使run方法运行。应该可以编写代码,以便您可以定义类并将其实例创建为一个构造。我仍然需要runOnUiThread来实际运行它,但我正在寻找一种简洁的方法来组合类定义和实例化。我已经看到它在某个地方完成,但不记得它是如何完成的:
class OnRunnableCompleted implements Runnable
{
@Override
public void run()
{
}
}
OnRunnableCompleted onRunnableCompleted = new OnRunnableCompleted();
runOnUiThread(onRunnableCompleted);
答案 0 :(得分:12)
runOnUiThread(new Runnable() { public void run() {} });
这会创建一个anonymous class来实现Runnable
接口,并将抽象run()
方法重写为无操作。
匿名类的一般形式是
new Name(superCtorParam0, superCtorParam1) {
member0;
member1;
}
,其中
Name
是要扩展/实现的接口或类的名称,superCtorParam
0 ... n 是Name
构造函数的参数member
0 ... n 是字段,方法,初始值设定项,匿名类的内部类,就像在任何其他类声明中一样答案 1 :(得分:2)
怎么样......
Runnable calculatePI = new Runnable(){
public void run(){/*calculate pi*/}
}
//Any time you need to calculate pi
runOnUiThread(calculatePI);
这会减少代码并防止重复创建匿名类。在我的android开发中,我经常使用这个解决方案。效果很好。
答案 2 :(得分:0)
在JDK 8中,您可以执行以下操作:
yourMethod(() -> System.out.println("RUN!"));
答案 3 :(得分:0)
使用匿名类
runOnUiThread(new Runnable() { public void run() {} });