我正在開發一個將啓動服務的android應用程序。服務將在每個固定時間間隔後執行一些代碼,並將結果結束到活動。活動應將結果顯示給用戶。如何在Android服務和更新UI中使用線程/定時器?
首先我嘗試了一個線程。 爲了在固定時間間隔後執行服務,我創建一個線程 - 執行代碼,得到結果 - 將此結果發送到活動以供顯示 - 讓線程在某個固定的時間間隔內休眠。 但它不按預期工作。代碼由線程執行。線程進入休眠狀態,然後在睡眠時間間隔結束後將結果發送到活動。要求是在執行線程代碼獲得結果後,UI必須立即更新。
我也試過使用Timer和TimerTask。但它給出了與上述相同的結果。 請幫助我。
服務類
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
td = new ThreadDemo();
td.start();
}
private class ThreadDemo extends Thread
{
@Override
public void run()
{
super.run();
String result = //code executes here and returns a result
sendMessageToUI(result); //method that will send result to Activity
ThreadDemo.sleep(5000);
}
}
private void sendMessageToUI(String strMessage)
{
Bundle b = new Bundle();
b.putString(「msg」, strMessage);
Message msg = Message.obtain(null, 13);
msg.setData(b);
}
Activity類
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
class IncomingHandler extends Handler
{
@Override
public void handleMessage(Message msg)
{
System.out.println("in ui got a msg................");
switch (msg.what)
{
case 13:
System.out.println("setting status msg..............");
String str1 = msg.getData().getString("msg");
textview.setText(str1);
break;
}
}
}
}
無需處理程序。使用'runOnUiThread' – Shafi