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

Android 使用本地服务更新活动中的Textview,android,service,textview,Android,Service,Textview,我有一个带有R.id.eventDistance和R.id.eventTime的活动,用于根据当前位置显示距离和行程时间。我使用位置服务类每30秒计算一次这些值 我的问题是:如何在活动中更新TextView?我尝试查找这个问题,并找到了一些可能的解决方案,例如使用BroadcastReceive并在onReceive()方法中调用TextView.setText()。我不知道这是怎么做到的。我应该这样通过活动课吗: public class MyReceiver extends Broadcas

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

我的问题是:如何在活动中更新TextView?我尝试查找这个问题,并找到了一些可能的解决方案,例如使用BroadcastReceive并在onReceive()方法中调用TextView.setText()。我不知道这是怎么做到的。我应该这样通过活动课吗:

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, HomeActivity.class);
   }
} 
我不知道那之后该怎么办。非常感谢您的帮助。

请查看此流程

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

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

sendBroadcast(i);
课堂上

private BroadcastReceiver uiUpdated= new BroadcastReceiver() {

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

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

    }
};

您应该将您的活动绑定到您的服务,以便它们可以直接通信和传递消息

裁判

嗨,谢谢你的回答。我将您的代码
TextView.setText(intent.getExtras().getString(“”)更改为与我的代码一起工作的代码。类似于:
distanceTextView.setText(intent.getExtras().getString(“distance”)。
。但它不起作用。文本视图不会更改。我不确定我做错了什么。唯一不同于您的代码的是我使用bundle而不是putExtra<代码>Bundle extras=i.getExtras()
extras.putString(“距离”,distance)
extras.putString(“持续时间”,持续时间)这会影响什么吗?我在BroadcastReceive()的onReceive()中放了一个Log.d,这一行永远不会被打印出来…
参数uiUpdated的非法修饰符;只允许使用final
I删除私有修饰符
private BroadcastReceiver uiUpdated= new BroadcastReceiver() {

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

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

    }
};
unregisterReceiver(uiUpdated);