首先,我是一个Android初学者,如果有愚蠢的问题请谅解。
我正在尝试做以下事情:
- 启用移动数据。
- 等待10秒钟。
- a. 检查是否移动设备已获取IP地址(数据连接成功)
b. 如果未连接,则禁用数据
c. 返回步骤1。
步骤1到3将在用户指定的重试次数中执行。
现在我的问题是:我卡在第2步上。
我无法创建 waitfor(int seconds)
函数。我尝试使用Runnable PostDelayed方法,但它没有给我所需的输出。
for(retry = UserChoice; retry > 0 && !isDataAvailable ; retry -- ){
enableInternet()
delay(10)
isDataAvailable = GetInternetAvailibility()
if(!isDataAvailable){
disableInternet()
}
}
我尝试将 isDataAvailable = GetInternetAvailibility()
语句放在handler的 postDelayed
中,但这会导致 enableInternet()
和 disableInternet()
在 isDataAvailable = GetInternetAvailibility()
延迟执行后同时执行。
从日志中我可以看到,enableInternet()
没有任何延迟地执行了 UserChoice
次。
Thread.sleep(10000)
会使UI冻结10秒钟... 我该怎么做才能实现这个功能呢?
编辑:让我解释一下:
public void onClick(View v) {
// Perform action on click
for(i=0; i<3; i++ ){
System.out.println("Before..");
delay(5);
System.out.println("after..");
}
}
public void delay(int seconds){
milliseconds = seconds * 1000;
runOnUiThread(new Runnable() {
@Override
public void run() {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
System.out.println("XXX"); //add your code here
}
}, milliseconds);
}
});
}
现在每当我点击按钮,我可以在日志中看到 System.out 打印的消息:
Before
after
Before
after
Before
after
XXX
XXX
XXX
但是我想要的是:
Before
XXX
After.
Before
XXX
After.
Before
XXX
After.