2013-01-10 48 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 .. –

相关问题