【发布时间】:2015-09-03 09:22:41
【问题描述】:
在我的 android 应用程序中,我试图创建一个类似于 ios 委托函数的情况。
(在 ios-> 中)调用执行检查的类,并在完成检查后使用委托将其重定向回视图控制器并执行下一个功能。
这是我的课
public class Checking{
private boolean flag;
public boolean getFlag(){
return flag;
}
public void checkFunction(){
//..... check database
if(need to do call webservice){
Thread thread = new Thread(){
@Override
public void run(){
// Perform webservice calling
}
};
thread.start();
}
else{
//end
}
}
}
这是我的活动
public class ActivityA extends Activity{
@Override
public void onResume(){
doChecking();
}
public void doChecking(){
Checking check = new Checking();
check.checkFunction();
// should finish preform checking in Checking class before proceed
if(check.getFlag()){
// perform next function
}
else{
// show alert
}
}
}
问题在于,在调用 Checking 类之后,它会立即执行函数调用下方的 if else。在某些情况下,Checking 类中的检查尚未完成,并显示一个空警报。线程可能会启动也可能不会启动,具体取决于数据库检查。
有人可以为我提供解决此问题的方法吗? 我知道调用 Checking 类后缺少某些内容,但我不太确定应该将其放在那里以达到结果。
提前致谢。
【问题讨论】:
-
你考虑过使用AsyncTask吗?
-
只需使用谷歌自己的 volley 库并将结果设置在模型类中即可。这是一种进行网络调用和处理数据的模块化方式
-
使用AsyncTask运行doChecking函数?
-
是的,使用 asyncTask,在 async 任务的 doInBackground 方法中做你的网络任务。
-
一般来说,最好也更简单的方法是使用 Volley。然而,在某些情况下 Volley 并不是最好的,或者根本不容易应用。对于这些情况,您应该使用 AsyncTask,在 doInBackground 方法中执行您的工作。您还可以使用 onPostExecute 方法在完成时执行您想要执行的任何操作。
标签: java android multithreading