我想从class B
访问AsyncTask
({1}}的子类),其中class C
是class B
的内部类。
我的代码结构是
class A
请帮帮我。
答案 0 :(得分:1)
class A{
Class B extends AsyncTask<>(){
}
}
Class C{
public void method()
{
//First create root class object. Then call sub class and execute it as
//below
new ClassA().new ClassB().execute();
}
}
答案 1 :(得分:0)
首先将Class B
公之于众。
class A{
public class B extends AsyncTask<>(){
}
}
然后在Class C
方法中调用它。
class C{
public void method(){
A a = new A();
A.B b = a.new B();
b.execute();
}
}
作为一般性说明:避免使用内部类AsyncTask
,因为它可能导致内存泄漏,因为它包含对class A
的隐式引用。这意味着即使class A
被破坏,您的AsyncTask
也可能会过时,并且不会释放您的class A
,这就是内存泄漏。
最简单的解决方案是使AsyncTask
静态。
class A{
public static class B extends AsyncTask<>(){
}
}
class C{
public void method(){
B b = new B();
b.execute();
}
}
除了将内部AsyncTask
子类设为静态外,您还可以将WeakReference
视为替代解决方案。