【问题标题】:How do I lock an Object / become owner of a monitor (Android)如何锁定对象/成为监视器的所有者(Android)
【发布时间】:2013-02-06 19:06:14
【问题描述】:

如何在 addTextChangedListener 中等待一秒钟?以下代码给出以下错误: E/AndroidRuntime(1003): java.lang.IllegalMonitorStateException: 在wait()之前对象没有被线程锁定

在对象的方法wait() 的Android 参考中它说:该方法只能由拥有该对象监视器的线程调用;请参阅 notify() 了解线程如何成为监视器的所有者。

并且在对象的 notify() 处说: 此方法只能由拥有此对象监视器的线程调用。线程成为对象监视器的所有者 •通过执行该对象的同步方法; •通过执行在对象上同步的同步语句的主体; • 如果对象是 Class 类型,则通过执行同步的静态方法。

我在这里遇到的一个问题:我不明白...

我应该怎么做才能“暂停”一秒钟?

public class Spel extends FragmentActivity  {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.spel);
    editText2 = (EditText) findViewById(R.id.editText2);
editText2.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start,
            int before, int count) {
        if (before==0) {
            String v = s.toString();
            if (v.equals("0") || v.equals("1") || v.equals("2") || v.equals("3") || v.equals("4") || v.equals("5") || v.equals("6") || v.equals("7") || v.equals("8") || v.equals("9")) {
                try {
                    wait(1000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                editText1.requestFocus();
                editText1.setText(null);
                editText2.setText(null);
                int baanWorpScore = Integer.parseInt(v);
            } 
            else {
                // blijf wachten op goede invoer
                editText2.setText(null);
            }
        }
    }
});

【问题讨论】:

    标签: android object locking owner


    【解决方案1】:

    当多个线程使用某些共享资源时,wait()\notify() 方法需要解决消费者\生产者问题。在您的情况下,如果您只想等待一秒钟,则需要使用 Handler 和 postDelayed。方法。如果您想再次冻结您的应用程序,请使用 Thread.sleep(1000)

    【讨论】:

      猜你喜欢
      • 2011-07-05
      • 2016-09-13
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      • 2012-06-22
      • 1970-01-01
      • 2019-12-29
      相关资源
      最近更新 更多