使用本地服务更新活动中的Textview

时间:2013-02-25 04:02:23

标签: android service textview

我有一个带有R.id.eventDistance和R.id.eventTime的活动来显示距离&基于当前位置的旅行时间。我使用我的位置服务类每30秒计算一次这些值。

我的问题是:如何在Activity中更新TextView?我已经尝试查找问题并找到了一些可能的解决方案,例如使用BroadcastReceiver并在onReceive()方法中调用TextView.setText()。我不确定这是怎么做的。我应该像这样传递Activity类:

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, HomeActivity.class);
   }
} 

我不确定在那之后该怎么做。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:15)

请看这个流程。

1.在您想要更新UI时的LocationService类中。在你的情况下,它应该每30秒调用一次。

Intent i = new Intent("LOCATION_UPDATED");
i.putExtra("<Key>","text");

sendBroadcast(i);

2.在您的UI(HomeActivity)课程中

onCreate()

中的

registerReceiver(uiUpdated, new IntentFilter("LOCATION_UPDATED"));

在班级

private BroadcastReceiver uiUpdated= new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

        TextView.setText(intent.getExtras().getString("<KEY>"))

    }
};

在onDestroy()

unregisterReceiver(uiUpdated);

答案 1 :(得分:1)

您应该将Activity绑定到您的服务,以便他们可以直接通信并传递消息。

参考

http://developer.android.com/guide/components/bound-services.html