2013-01-10 42 views
0

我一直在Google上搜索,找不到一個簡單的解決方案來解答我的問題。我有皮棉警告「這個處理程序類應該是靜態的或泄漏可能發生」所建議的羅曼蓋伊和許多其他和建造我的處理程序如下於是我按照邏輯..從Android中的靜態處理程序調用非靜態方法

public static class MyHandler extends Handler { 
    private final WeakReference<CustomTrophyCreateActivity> mActivity; 

    MyHandler(CustomTrophyCreateActivity activity) { 
     mActivity = new WeakReference<CustomTrophyCreateActivity>(activity); 
    } 

    @Override 
    public void handleMessage(Message msg) { 

    if (mActivity != null) { 
    Activity activity = mActivity.get(); 
     if (activity != null) { 
      // Call non static method in enclosing activity.. CANT DO THIS 
      startUploadPhoto(); 
     } 
    }   
} 

所以基本問題是..如何從Handler中調用這個非靜態方法,該方法已被製作爲靜態以避免內存泄漏?

我真的想避免使startUploadPhoto()靜態,因爲1)它不需要和2)它需要大量的工作改變變量。我完全理解爲什麼這個皮棉警告是彈出來的..我似乎無法找到一個簡單的解決方案來擺脫它。謝謝。

+0

你有你的活動在那裏,是嗎? –

+0

是的活動是封閉的類。我不知道你要去哪裏。 –

+0

你不能只是做'activity.startUploadPhoto();'? (如果輸入正確) –

回答

0

您需要使用您的引用來調用該方法,而不是隱式封閉類。嘗試activity.startUploadPhoto();

+0

謝謝,看看我上面的評論,我瘋了,只需要施放, –

+1

或者更好的是,將活動聲明爲CustomTrophyCreateActivity .. –

相關問題