Android Sleep/Wait/Delay功能 [英] Android Sleep/Wait/Delay function
问题描述
首先,我是android世界的初学者,所以如果这是一个愚蠢的问题,请向我道歉.
first of all, I'm a beginner to android world so please apologize me if it is stupid question..
我正在尝试执行以下操作:
I'm trying to do following:
- 启用移动数据
- 等待10秒
- a.检查手机是否获得IP地址(数据已成功连接)
b.如果未连接,请禁用数据
C.转到步骤1
- Enable Mobile Data
- Wait for 10 seconds
- a. check if Mobile got IP address (data connected sucessfully)
b. if Not connected,Disable Data
c. Go to step 1
对于给定的重试次数,For循环中将执行步骤1至3.
And these steps 1 to 3 are getting executed in For loop for User Given number of retries.
现在我的问题是:我停留在第2步.
我无法执行waitfor(int seconds)
函数.我尝试使用Runnable PostDelayed方法,但未提供所需的输出.
Now my problem is: I'm stuck at step No. 2.
I'm unable to make waitfor(int seconds)
function. I tried using Runnable PostDelayed method but it is not giving me required output.
for(retry = UserChoice; retry > 0 && !isDataAvailable ; retry -- ){
enableInternet()
delay(10)
isDataAvailable = GetInternetAvailibility()
if(!isDataAvailable){
disableInternet()
}
}
我试图将isDataAvailable = GetInternetAvailibility()
语句放入处理程序的postDelayed
中,但这导致enableInternet()
disableInternet()
同时执行,而isDataAvailable = GetInternetAvailibility()
在延迟后执行.
I tried to put isDataAvailable = GetInternetAvailibility()
statement in postDelayed
of handler but it is causing enableInternet()
disableInternet()
to execute at the same time while isDataAvailable = GetInternetAvailibility()
gets executed after delay.
我从日志中看到,enableInternet()
执行了UserChoice
次,没有任何延迟.
I can see from logs, that enableInternet()
executes for UserChoice
number of times without any delay.
Thread.sleep(10000)仅将UI冻结10秒钟...我该如何实现?
Thread.sleep(10000) just freezes the UI for 10 seconds... How do I achieve this?
让我清除一下:
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将消息打印为:
之前
之后
之前
之后
之前
之后
XXX
XXX
XXX
但我要:
之前
XXX
之后.
之前
XXX
之后.
之前
XXX
之后.
Now whenever I click button I can see in logs that System.out prints message as:
Before
after
Before
after
Before
after
XXX
XXX
XXX
But I want:
Before
XXX
After.
Before
XXX
After.
Before
XXX
After.
推荐答案
尝试一下:
public void check() {
isDataAvailable = GetInternetAvailibility()
if (!isDataAvailable) {
disableInternet();
enableInternet();
if (retry > 0) {
retry--;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
check();
}
}, 10000);
}
}
}
这篇关于Android Sleep/Wait/Delay功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!