Android - 正确的方式来监听变量变化,并在变化时做些什么?

时间:2013-06-12 12:59:13

标签: android variables handler listen

我正在制作的应用程序要求在特定变量的值从0变为1时执行一些代码。
下面的处理程序示例是我目前用来执行此操作的方法(我是从其他人复制的) 我觉得这不是一个合适的方法,因为在我的应用程序中只有三个这样的处理程序会导致UI相当无响应,并导致设备(电话)变得很热。
正如你所看到的,我已经在处理程序中加入了10ms的延迟来试图解决这个问题 是否有更像 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();

1 个答案:

答案 0 :(得分:1)

您必须通过setter方法设置变量。然后,你可以对这种变化做出反应。

public void setMyVariable(int value) {
this.myVariable = value;
if (myVariable == 1) {
  doSomethingWhen1();
} else if (myVariable == 0) {
  doSomethingWhen0();
}
}

更优雅的方法是观察者模式,Here你可以找到更详细的文档。

您必须在移动设备上避免while(true)循环,它会耗尽您的电池并且您也会阻止UI线程。这就是为什么你的用户界面没有响应而你的手机很热的原因。