【发布时间】:2012-10-16 12:49:03
【问题描述】:
我正在开发一个将启动服务的 android 应用程序。该服务将在每个固定的时间间隔后执行一些代码并将结果结束给 Activity。Activity 应该向用户显示结果。
首先我用线程进行了尝试。 为了在固定时间间隔后执行服务,我创建了一个线程 - 执行代码,获取结果 - 将此结果发送到活动以进行显示 - 使线程在某个固定时间间隔内休眠。 但它没有按预期工作。代码由线程执行。线程进入睡眠状态,然后在睡眠时间间隔后将结果发送到最后的活动。要求是线程代码执行得到结果后必须立即更新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);
}
活动类
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
标签: android multithreading service timer