我需要使用线程吗?

时间:2015-02-21 03:32:33

标签: java android

我需要在这里解决一些问题。我正在使用java android eclipse。

问题:如果我点击添加或减去按钮,它将执行这两种方法,对吗? 我想要的是:

  1. 如果我同时点击按钮,它应该只执行1个方法。
  2. 如果我一直按下按钮,我不希望同时执行添加方法。
  3. 如果添加功能仍处理,我想终止减号功能。
  4. 怎么做?
  5. 问题:我是否需要使用线程?

    public void Add(int a, int b){
         return a + b;
    }
    
    public void Minus(int a, int b){
        return a - b;
    }
    
    public void btn_add(View view){
          Add(a,b);
    }
    
    public void btn_minus(View view){
          Minus(a,b);
    }
    

2 个答案:

答案 0 :(得分:1)

我假设您已将要执行的任务简化为名为addminus的方法,但这些实际上是更复杂的任务,需要非常重要的时间。 (否则,您在处理时不会再担心再次点击)。

所以,我认为你应该使用线程,但不要自己承担创建和管理工作线程的复杂性。您应该使用AsyncTask

所以,模式会:

public void clickAdd(View view) {
  if (mTask.getStatus() != AsyncTask.Status.FINISHED) {
    return;
  }

  mTask.execute(...);
}

private AddTask mTask = new AddTask();

private class AddTask extends AsyncTask {
    public void doInBackground(...) {

    }
}

答案 1 :(得分:0)

Greg Ennis的回答假设您担心,因为您的实际方法非常耗时,与addsubtract示例不同。

如果您不关心这一点,我应该指出,如果这些是短期运行方法,那么您根本不需要担心线程。不要指定任何Threads,Runnables或AsyncTasks。单击按钮时,将在UI线程上自动调用onClick方法,因此在onClick方法(因此add之前,任何其他按钮点击都不可能发生。 } method)返回。

关于您的第1点,我认为Android不允许同时按下按钮。