Dao Lam
Dao Lam

Reputation: 2937

Updating Textview in an Activity with Local Service

I have an Activity with R.id.eventDistance and R.id.eventTime to display the distance & travel time based on current location. I calculate these values every 30 seconds using my Location Service class.

My question is: how do I update the TextView in Activity? I've tried looking up the question and found some possible solutions such as using a BroadcastReceiver and call TextView.setText() in the onReceive() method. I'm not sure how this is done. Am I supposed to pass in the Activity class like this:

public class MyReceiver extends BroadcastReceiver {

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

I'm not sure what to do after that. Any help is appreciated.

Upvotes: 6

Views: 7658

Answers (2)

jtt
jtt

Reputation: 13541

You should bind your Activity to your service so that they can directly communicate and message pass.

Ref

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

Upvotes: 1

Jignesh Ansodariya
Jignesh Ansodariya

Reputation: 12685

please see this flow.

1.in your LocationService class when you want to update UI. in your case it should be called every 30 seconds.

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

sendBroadcast(i);

2.in your UI (HomeActivity) class

in onCreate()

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

in class

private BroadcastReceiver uiUpdated= new BroadcastReceiver() {

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

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

    }
};

in onDestroy()

unregisterReceiver(uiUpdated);

Upvotes: 15

Related Questions