2013-06-20 93 views
0

目前,下面的代码给出了编译erorr,因为侦听器不知道什么是smsTask。我需要侦听器中的smsTask实例。如果没有将它传递给contruntor,是否可以这样做?如果我这样做似乎redunant:在未通过的接口中获取对象引用

.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); 

回答

3

你可以声明变量final

final SmartPhoneTask smsTask=createSmsTask(); 
0

如果TaskCompleteListener在你的控制之下,你可以一个Task参数添加到onTaskComplete()方法:

public void onTaskComplete(Task task) { 
    releaseResources(task); 
} 

现在System有相应的任务传递给听者当onTaskComplete()方法被调用。

通过这种方式,您还可以将相同的TaskListener添加到多个任务。

相关问题