代码之家  ›  专栏  ›  技术社区  ›  SKG

如何等待静态字符串获取特定值

  •  0
  • SKG  · 技术社区  · 7 年前

    我是android studio的新手,我的问题可能听起来很简单,但我确实迫切需要一个解决方案。 在执行特定代码块之前,我需要检查静态字符串的值是否等于1。它每500ms更新一次。它从1到16,然后回到1。 我试过倒计时,但没用。请帮忙。 编辑:这就是我正在尝试的。

    store=findViewById(R.id.store);
        store.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                for (int i = 1; i <= 16; i++){
                    String m=s;
                    if (m.equals("1")) {
                        store();
                        break;
                    } else {
                        new Timer().schedule(new TimerTask() {
                            @Override
                            public void run() {
                                // this code will be executed after 2 seconds
                            }
                        }, 500);
                    }
            }
            }
        });
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Ahmad Ogen    7 年前

    所以本质上你想做的是,你想观察这个值,对吗?

    相反,您可以做的是,每次更改值时,都会调用回调,或者已经显式调用了代码块。

    // this gets called  every 500 ms
    public static void updateMyValue(String value){
      MY_STATIC_STRING = value;
      callMyBlockOfCode();
    }
    
        2
  •  0
  •   SKG    7 年前

    这个对我有用。谢谢大家抽出时间。

    store=findViewById(R.id.store);
        store.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                    String m=s;
                    if (m.equals("1")) {
                        store();
                    } else {
                        int i=Integer.parseInt(m);
                        i=(17-i)*delay;
                        new CountDownTimer(i, 1) {
                            public void onFinish() {
                                store();
                            }
                            public void onTick(long millisUntilFinished) {
                            }
                        }.start();
                    }
            }
        });