我不明白为什么我收到这个编译错误; 这里涉及的任何类或方法都不是静态的.也许有人可以在这里说清楚.
在我的MainActivity类中,我声明了一个扩展AsyncTask的公共类:
public class AsyncStuff extends AsyncTask<String, Void, String> {
...
}
Run Code Online (Sandbox Code Playgroud)
在我的非活动类中,我有一个应该触发异步任务的公共函数:
public class Util {
public void ExecuteAsyncMethod(){
MainActivity.AsyncStuff.execute(new String[]{"test" }); // error here
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试实例化MainActivity.AsyncStuff类的对象并执行其execute()方法,但这不起作用,因为它不在封闭类中.我无法将其移动到其他地方,因为我需要更新UI,因此需要保留在MainActivity类中.
无论如何,我需要帮助来弄清楚为什么我的ExecuteAsyncMethod()方法不能编译.
谢谢!!
小智 7
定义如下:
public static class AsyncStuff extends AsyncTask<String, Void, String> {
...
}
Run Code Online (Sandbox Code Playgroud)
并运行如下:
public class Util {
public void ExecuteAsyncMethod(){
new AsyncStuff().execute(new String[]{"test" });
}
}
Run Code Online (Sandbox Code Playgroud)
您收到该错误的原因是您必须实例化您的AsyncTask,您试图将execute()其作为静态方法进行调用。
至于您是否可以移动您的AsyncTask,是的,您可以,只需将类设为静态(或使其完全成为自己的类)并对活动有一个弱引用,因此如果它在您之前完成,您不要将它保存在 ram 中AsyncTask. 无论您是否将其保留在内部,这都是您想做的事情MainActivity。
| 归档时间: |
|
| 查看次数: |
6164 次 |
| 最近记录: |