Android 连续调用网络操作?

Android calling a network operation continuously?

在我的 android 应用程序中,我必须每 30 秒调用一次网络操作。

现在我从 activity 的简历中调用以下代码。

new Thread(new Runnable() {
        public void run() {
            while(true){
                try {
                    HTTPConnection httpConnection = new HTTPConnection();
                    httpConnection.extendSession(userId);
                    wait(30000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start();

但它会导致以下异常

java.lang.IllegalMonitorStateException: object not locked by thread before wait().

如何实现上述功能?

我会在你的情况下使用 Timer/TimerTask。计时器在不同的线程上运行,您可以将其安排在固定的时间间隔内。例如

class MyTimerTask extends TimerTask {
  public void run() {
     HTTPConnection httpConnection = new HTTPConnection();
     httpConnection.extendSession(userId);
  }
}

和onCreate

Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTimerTask(), new Date(), 30000);

关于你的例外情况

wait() 需要一个 synchronized 块和一个锁对象。常见用法通过对 wait()/notify(),并且由于它们通常在不同的线程上调用,因此您需要一个 synchronized 块来保证对锁本身的正确访问。

public static final Object mLock = new Object();

new Thread(new Runnable() {
        public void run() {
          synchronized(mLock) {
            while(true){
                try {
                    HTTPConnection httpConnection = new HTTPConnection();
                    httpConnection.extendSession(userId);
                    mLock.wait(30000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
          }
        }
    }).start();