2012-09-17 87 views
0

在我的Android应用程序中,我启动了onclick按钮中的一个线程。线程工作正常。主题和事件处理程序Android

我想阻止用户在收到第一个响应之前再次单击相同的按钮。它导致另一个线程的开始。请帮助我在android中的线程和事件处理。

回答

0

禁用按钮和线程结束启用按钮,您还可以确保只有“一个”线程的实例可以打开。为此,您必须执行以下操作。

public class ThreadClass{ 
    private static ThreadClass instance; 

    public static ThreadClass getInstance(){ 

     if(instance == null){ 
      instance = new ThreadClass(); 
     } 

     return instance; 
    } 

    private ThreadClass(){ 
    //Set the constructor to private 
    } 
} 

然后你就可以用

private newThread= ThreadClass.getInstance(); 

存取权限的胎面实例,所以它也确保了只有一个该线程的实例存在。

0

您可以添加像

isFirstThreadEnded = false的布尔变量;

,并添加一个方法

public void onFirstThreadEnded { 
isFirstThreadEnded = true; 
} 

,使线程调用此方法时,他完成了第一轮。 和onClick事件在运行前检查该值是否为true。

,只是一个sinnpet,你应该做一个比较复杂一点来处理第一次点击的第一个线程已经加载之前,但它在一般

想法
的一个实例:

在你的线程:

private IntentService myIntentService; 

public MyThread (IntentService intentService) { 
myIntentService = intentService; 
} 

@Override 
public void run() 
{ 
//do your thread stuff 
//when finished call onFirstThreadEnded inside myIntentService 
somecode() 
myIntentService.onFirstThreadEnded(); 
} 
在IntentService

private boolean isFirstThreadEnded = false; 

public void startThread() 
{ 
    button.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    if (isFirstThreaEnded) 
      new MyThread(this).start(); 
    }); 
} 

public void onFirstThreadEnded() 
{ 
isFirstThreadEnded = true; 
} 

我t应该是这样的......但你仍然需要处理第一个线程运行,因为isFirstThreadEnded的默认值是false;

+0

你能解释一下吗?我从意向服务启动一个线程。 – Akilan

+0

我实际上从来没有使用意图服务,但机制应该是类似的: 我会将它添加到我的答案 –

0

当用户点击该按钮使用button.setEnabled(false)使用button.setEnabled(true)

希望这有助于你