我试图在 Java 纯代码中重现 Android 的 AsyncTask 遵循的相同逻辑。
为此,我创建了实现我的 IAsynTask 的抽象类 AsyncTask,它基本上调用 onPreExecute、doInBackground 和 onPostExecute,我还创建了执行魔法的方法。
例如,为了在我的登录过程中使用它,我创建了扩展 AsyncTask 的 LoginTask 类,但与我想象的 onPreExecute、doInBackground 和 onPostExecute 的实现不同,它看起来并不是强制性的。我究竟做错了什么?
接口:
public interface IAsyncTask {
public void onPreExecute();
public void doInBackground();
public void onPostExecute();
}
班级:
public abstract class AsyncTask implements IAsyncTask{
public void onPreExecute() {
}
public void doInBackground(){
}
public void onPostExecute() {
}
public void execute() {
onPreExecute();
new Thread(new Runnable() {
@Override
public void run() {
doInBackground();
Platform.runLater(new Runnable() {
@Override
public void run() {
onPostExecute();
}
});
}
}).start();
}
}
[编辑]
关于 javafx 的问题,我注意到许多新开发人员都面临管理线程的问题。我想分享我为简化在 javafx 上管理线程的生活所做的工作。我创建了一个基于 Android 的 AsyncTask 的 AsyncTask 类,它基本上以一种简陋但有效的方式与 Android 相同。您可以在Github 项目上找到有关它的更多信息