目前,下面的代码给出了编译erorr,因为监听器不知道什么是smsTask。我需要一个侦听器中的smsTask实例。是否有可能没有在contruntor中传递它?如果我这样做似乎是不可能的:
.createTask(smsTask,new TaskCompleteListener(smsTask){...}
当前代码:
public void doStuff(){
SmartPhoneTask smsTask=createSmsTask();
super.getSystem().createTask(smsTask,new TaskCompleteListener(){
@Override
public void onTaskComplete() {
releaseResources(smsTask);//error.
}});
}
private SmartPhoneTask createSmsTask() {
return new SmartPhoneTask();
}
的CreateTask:
void createTask(SmartPhoneTask task, TaskCompleteListener listener);
答案 0 :(得分:3)
您可以声明变量final
:
final SmartPhoneTask smsTask=createSmsTask();
答案 1 :(得分:0)
如果TaskCompleteListener
在您的控制之下,您可以在Task
方法中添加onTaskComplete()
参数:
public void onTaskComplete(Task task) {
releaseResources(task);
}
现在System
必须在调用onTaskComplete()
方法时将相应的任务传递给侦听器。
通过这种方式,您还可以将相同的TaskListener
添加到多个任务中。