2013-06-20 90 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添加到多個任務。

相關問題