如何等待 10 秒而不锁定 android 中的应用程序 UI [重复]
Posted
技术标签:
【中文标题】如何等待 10 秒而不锁定 android 中的应用程序 UI [重复]【英文标题】:How can I wait for 10 second without locking application UI in android [duplicate] 【发布时间】:2013-06-18 16:56:12 【问题描述】:我遇到了一个问题,我想等待 10 秒,因为我希望我的应用程序在 10 秒后启动下面的代码,但不阻止该人点击应用程序中的任何其他内容(没有 打电话给Thread.sleep();
)。
try
Log.v("msg", "WAIT CheckFrequencyRun");
Thread.sleep(10000); // giving time to connect to wifi
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();
//if no network
if(wifiManager.getConnectionInfo().getNetworkId()==-1)
//stop wifi
wifiManager.setWifiEnabled(false);
Log.v("msg", "no connection");
handler.postDelayed(this, checkInterval);
//else connection
else
Log.v("msg", "connection");
onDestroy();
【问题讨论】:
看看这些问题,它们看起来很相似:-***.com/questions/4111905/…-***.com/questions/9630681/…-***.com/questions/9640880/…-***.com/questions/13765034/wait-a-time-android?rq=1 postDelayed 不会锁定您的 Ui,但 Thread.Sleep 会。删除 Thread.Sleep 并在 Runnable 中继续您的工作 【参考方案1】:你可以用这个:
Handler handler = new Handler();
handler.postDelayed(new Runnable()
public void run()
// Actions to do after 10 seconds
, 10000);
对于停止处理程序,您可以尝试以下操作:
handler.removeCallbacksAndMessages(null);
【讨论】:
简单,无需任何额外努力即可工作。我需要一些简洁的东西,它就像一个魅力 美女!!!像魅力一样工作。谢谢!【参考方案2】:你永远不想在UI
线程上调用thread.sleep()
,因为听起来你已经想通了。这会冻结UI
并且总是一件坏事。您可以使用单独的Thread
和postDelayed
This SO answer 展示了如何做到这一点以及其他几个选项
Handler
TimerTask
您可以查看这些,看看哪些最适合您的特定情况
【讨论】:
【参考方案3】:1带有处理程序:
handler.sendEmptyMessageDelayed(1, 10000);
private Handler handler = new Handler()
@Override
public void handleMessage(Message msg)
if (msg.what == 1)
//your code
;
【讨论】:
什么是“TRIGGER”,因为 android 文档要求一个 int 不能放字符串 我错了...这是您的消息 ID。试试 1【参考方案4】:在新线程上执行此操作(将其与主线程分开)
new Thread(new Runnable()
@Override
public void run()
// TODO Auto-generated method stub
).run();
【讨论】:
以上是关于如何等待 10 秒而不锁定 android 中的应用程序 UI [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 postgres 中使用“更新跳过锁定”而不锁定查询中使用的所有表中的行?
HttpClient.GetAsync 一次只执行 2 个请求?
如何在 Spring Security 中阻止 LDAP 用户帐户而不锁定 LDAP 用户?
Android BLE write Characteristic 锁定 onCharacteristicWrite/onCharacteristicChange