2013-07-24 33 views
0

我想直接從MySQL數據庫更改按鈕的狀態。 狀態爲:

1.啓用
2.禁用。

我有一個Asynctask執行一些查詢,並給出一些結果如真或假 如果它給真正的然後啓用按鈕,否則禁用。直接從Android的MySQL數據庫更改狀態按鈕

我希望按鈕自動改變狀態,如果有一個手動更改數據庫中的值 什麼是最好的或任何方法來做到這一點。

謝謝

回答

1

我認爲一個循環地監聽變化的線程是最好的解決方案。儘管如此,使用AsyncTask並不是實現這一目標的首選方式,因爲按設計,AsyncTask只能用於短期運行操作。 使用工作線程,將UI線程處理程序傳遞給工作線程,並通過此處理程序更新按鈕。

public class MyThread extends Thread{ 

    private final long WAITING_TIME = 5000; 
    private Handler handler; 
    private boolean current_state = false; 

    MyThread(Handler handler){ 
     this.handler = handler; 
    } 

    run(){ 
     new_state = // retrieve from database; 
     if(new_state != current_state){ 
      handler.send(new Message().setData(new Bundle().putBoolean("STATE",new_state))); 
      current_state = new_state; 
     } 
     this.wait(WAITING_TIME); 
    } 
} 

而在你的活動,解析到達的消息,並做必要的改變(你並不真的需要解析的消息,如果這是與處理器通信的唯一線索,因爲你知道,每一個新的消息意味着按鈕狀態的改變)。因此,例如在你的onCreate()回調:

handler = new Handler(){ 
    public void handleMessage(Message message){ 
     if(message.getBundle().getBoolean("STATE")) 
      //activate button 
     else 
      //deactivate button 
    } 
} 

new MyThread(handler).start(); 

另一個解決方案是在您的應用程序等待來自數據庫的通知使用反應劑。但這不是一個好的設計,因爲它會將你的應用程序和你的後端變成一個退化的服務器。

+0

是的,謝謝你好主意..這將工作:) – Bora