使用android中的线程和服务,每10秒重复一次任务

使用android中的线程和服务,每10秒重复一次任务,android,multithreading,service,Android,Multithreading,Service,当应用程序启动时,我调用了两个Web服务,它们在后台运行 每次保养大约需要35-40秒。在这些服务完成之前,我会在单击每个选项卡时显示一个加载器,我的选项卡中有4个活动。 当这些服务完成时,我隐藏加载程序并显示数据 现在,我的问题是?当服务在后台运行时,如果网络出现故障,我如何通过对话框告知用户进程被网络中断 我可以在android中每隔10秒或更短时间检查一次网络连接吗? 这样我就可以通过对话与用户亲密接触并恢复服务 提前感谢。当您使用HTTP连接时,请用try-catch环绕,以阻止网络数据

当应用程序启动时,我调用了两个Web服务,它们在后台运行

每次保养大约需要35-40秒。在这些服务完成之前,我会在单击每个选项卡时显示一个加载器,我的选项卡中有4个活动。 当这些服务完成时,我隐藏加载程序并显示数据

现在,我的问题是?当服务在后台运行时,如果网络出现故障,我如何通过对话框告知用户进程被网络中断

我可以在android中每隔10秒或更短时间检查一次网络连接吗? 这样我就可以通过对话与用户亲密接触并恢复服务


提前感谢。

当您使用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;
                 }
             }
         };