我正在看帖子:
Detect if Android device has Internet connection
和检查互联网连接的方法工作正常,只有困扰我的是我必须检查后台线程(从主线程无法检查)
我需要的是检查是否有互联网连接,并在我得到答案后,我需要继续从代码行。
问题是,如果我检查后台thred(AsyncTask)中的连接,main thred将创建新线程并继续编译其余代码。
这是我的代码:
if(dbAdapter.doesDbExist(this)){
Log.e("Da li baza postoji", "postoji");
if(hasActiveInternetConnection(this)){
new DownloadAllProizvodiTask(1).execute();
}
}
else {
Log.e("Da li baza postoji", "ne postoji");
if(hasActiveInternetConnection(this)){
new DownloadAllProizvodiTask(2).execute();
}
else{
Toast.makeText(this, "U need internet connection to download resorces", Toast.LENGTH_LONG);
finish();
}
}
所以我必须把方法hasActiveInternetConnection()放到asynctask中,当它完成时,它必须从那继续。
有人可以给我一些建议吗?
答案 0 :(得分:1)
你必须重新修改事物的顺序才能使它与AsyncTask一起工作。你的AsyncTask应该是这样的:
new AsycTask<Void, Void, Boolean>() {
@Override Boolean doInBackground(Void... params) {
return hasActiveInternetConnection(...);
}
@Override onPostExecute(Boolean result) {
if(result) {
new DownloadAllProizvodiTask(2).execute();
} else {
Toast.makeText(this, "U need internet connection to download resorces", Toast.LENGTH_LONG);
finish();
}
}
}.execute();
在你的外部其他地方,只需开始这项任务。