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

Dao*_*Lam 6 service android 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);
   }
} 
Run Code Online (Sandbox Code Playgroud)

我不知道在那之后该怎么做.任何帮助表示赞赏.

Jig*_*iya 15

请看这个流程.

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

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

sendBroadcast(i);
Run Code Online (Sandbox Code Playgroud)

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

在onCreate()

registerReceiver(uiUpdated, new IntentFilter("LOCATION_UPDATED"));
Run Code Online (Sandbox Code Playgroud)

在班上

private BroadcastReceiver uiUpdated= new BroadcastReceiver() {

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

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

    }
};
Run Code Online (Sandbox Code Playgroud)

在onDestroy()

unregisterReceiver(uiUpdated);
Run Code Online (Sandbox Code Playgroud)