2012-09-17 138 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)

希望這有助於你