android wait函数使用,Android Sleep/Wait/Delay函数

这篇博客讨论了在Android开发中如何实现一个功能,即在用户指定的重试次数内检查移动数据连接是否成功获取IP地址。作者遇到了在启用和禁用移动数据以及检查网络可用性之间实现延迟的问题。他们尝试使用Runnable和Handler进行延迟操作,但遇到了同步问题,导致功能无法按预期工作。博客内容涉及到Android应用的网络连接管理、线程同步以及UI更新的挑战。
摘要由CSDN通过智能技术生成

首先,我是一个初学Android的世界,所以请道歉,如果这是愚蠢的问题..

我正在尝试做以下事情:

启用移动数据

等待10秒

一个。检查Mobile是否有IP地址(数据连接成功)

湾如果未连接,则禁用数据

C。转到第1步

这些步骤1到3在For循环中执行用户给定的重试次数。

现在我的问题是:我卡在第2步。

我无法使waitfor(int seconds)功能。我尝试使用Runnable PostDelayed方法,但它没有给我需要的输出。

for(retry = UserChoice; retry > 0 && !isDataAvailable ; retry -- ){

enableInternet()

delay(10)

isDataAvailable = GetInternetAvailibility()

if(!isDataAvailable){

disableInternet()

}

}我尝试将isDataAvailable = GetInternetAvailibility()语句放在处理程序的postDelayed中,但它会导致enableInternet() disableInternet()同时执行,同时isDataAvailable = GetInternetAvailibility()在延迟后执行。

我可以从日志中看到,enableInternet()执行UserChoice次没有任何延迟。

Thread.sleep(10000)只会冻结用户界面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输出的信息如下:

前后

前后

XXX

XXX

XXX

但我想:

XXX

之后,

XXX

之后,

XXX

之后,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值