【发布时间】:2013-06-08 14:30:03
【问题描述】:
我正在制作的应用程序需要在特定变量的值从 0 变为 1 时执行一些代码。
下面的处理程序示例是我目前用来执行此操作的方法(我从其他人那里复制了它)。
我觉得这不是一个合适的方法,因为在我的应用程序中只有三个这样的处理程序会导致 UI 相当无响应,并导致设备(电话)变得非常热。
如您所见,我在处理程序中设置了 10 毫秒的延迟来尝试处理此问题。
难道没有更类似于 OnClickListener 的东西,它可以随时监听变量值的变化,而不会给 CPU 带来如此大的压力吗?
我对 Java 和 Android 还很陌生,所以非常感谢一个简单的例子。
final Handler myHandler1 = new Handler();
new Thread(new Runnable()
{
@Override
public void run()
{
while (true)
{
try
{
Thread.sleep(10);
myHandler1.post(new Runnable()
{
@Override
public void run()
{
if (myVariable == 1)
{
myVariable = 0;
//do stuff
}
}
});
} catch (Exception e) {}
}
}
}).start();
【问题讨论】:
-
如果需要,您可以实现您的委托模式。你有什么问题
-
是什么改变了变量的值,它多久发生一次?看来您需要
BroadcastReceiver。 -
@Squonk 按下键盘上的回车键或屏幕上的按钮会将值更改为 1。频率取决于用户按下键/按钮的频率。最有可能的是,值更改最多每秒发生一次,但重要的是要识别值更改并立即采取行动,这样用户就不会看到延迟响应。
-
@EricGlass :在那种情况下,我真的不明白你的问题是什么。为什么不只做需要在键/按钮事件处理程序中完成的事情?
-
@Squonk 在这种特殊情况下,我试图让事情保持整洁,并试图通过同时按下回车键和同时按下屏幕按钮。但这主要只是给你一个例子。我最近遇到了几种情况,在这些情况下,能够“倾听”变量是最理想的。目前,除了尝试解决特定问题之外,我只是在寻找我提出的问题的答案,以供知识和将来参考。
标签: android variables handler listen