使用android中的线程和服务,每10秒重复一次任务
当应用程序启动时,我调用了两个Web服务,它们在后台运行 每次保养大约需要35-40秒。在这些服务完成之前,我会在单击每个选项卡时显示一个加载器,我的选项卡中有4个活动。 当这些服务完成时,我隐藏加载程序并显示数据 现在,我的问题是?当服务在后台运行时,如果网络出现故障,我如何通过对话框告知用户进程被网络中断 我可以在android中每隔10秒或更短时间检查一次网络连接吗? 这样我就可以通过对话与用户亲密接触并恢复服务使用android中的线程和服务,每10秒重复一次任务,android,multithreading,service,Android,Multithreading,Service,当应用程序启动时,我调用了两个Web服务,它们在后台运行 每次保养大约需要35-40秒。在这些服务完成之前,我会在单击每个选项卡时显示一个加载器,我的选项卡中有4个活动。 当这些服务完成时,我隐藏加载程序并显示数据 现在,我的问题是?当服务在后台运行时,如果网络出现故障,我如何通过对话框告知用户进程被网络中断 我可以在android中每隔10秒或更短时间检查一次网络连接吗? 这样我就可以通过对话与用户亲密接触并恢复服务 提前感谢。当您使用HTTP连接时,请用try-catch环绕,以阻止网络数据
提前感谢。当您使用HTTP连接时,请用try-catch环绕,以阻止网络数据,并在出现问题时显示错误消息 将
Runnable
目标添加到您的服务中
new Runnable() {
@Override
public void run() {
while(true){
if(socket.isConnected()){
}else{
// show error and call dialog
}
}
}
};
如果您使用的是套接字,您可以使用a和Android:
checkCon()
如果与移动设备(conMgr.getNetworkInfo(0))和Wifi(conMgr.getNetworkInfo(1))的连接断开,则返回false
试试下面的代码
TimerTask refresher;
// Initialization code in onCreate or similar:
timer = new Timer();
refresher = new TimerTask() {
public void run() {
handler.sendEmptyMessage(0);
};
};
// first event immediately, following after 1 seconds each
timer.scheduleAtFixedRate(refresher, 0, 65);
@SuppressLint("HandlerLeak")
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case REFRESH:
break;
default:
break;
}
}
};
这对我来说就像一种魅力。。希望这对你有帮助 谢谢sani,这段代码非常适合刷新。现在我的问题是当网络不可用时如何显示对话框。我遇到了这个问题,因为当webservices在后台运行时,我可以在我的应用程序中从一个选项卡导航到另一个选项卡,作为android中的对话框所需的上下文,我必须将该上下文发送到对话框,在该对话框中,我的选项卡活动中有4个选项卡活动。感谢Rajesh此代码非常适合刷新。现在我的问题是当网络不可用时如何显示对话框。我遇到了这个问题,因为当webservices在后台运行时,我可以在应用程序中从一个选项卡导航到另一个选项卡,作为android所需上下文中的对话框,我必须将该上下文发送到对话框,其中我的选项卡活动中有4个选项卡活动。您好,您可以使用广播接收器查找网络是否可用。。
TimerTask refresher;
// Initialization code in onCreate or similar:
timer = new Timer();
refresher = new TimerTask() {
public void run() {
handler.sendEmptyMessage(0);
};
};
// first event immediately, following after 1 seconds each
timer.scheduleAtFixedRate(refresher, 0, 65);
@SuppressLint("HandlerLeak")
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case REFRESH:
break;
default:
break;
}
}
};