Thanks I'll give this a try and read that article and see what I can do.
Thanks again for your time.

On Tue, Jan 12, 2010 at 3:06 PM, ponkin <alexey.pon...@gmail.com> wrote:

> Hello,
>
> This is from
> http://developer.android.com/reference/android/content/BroadcastReceiver.html
> "A BroadcastReceiver object is only valid for the duration of the call
> to onReceive(Context, Intent). Once your code returns from this
> function, the system considers the object to be finished and no longer
> active." - it means that you can not just say: "aa.notifyDataSetChanged
> (); " your "onReceive(Context, Intent)"  executes in different thread
> than your main activity. So you should use "Handler"(http://
> developer.android.com/reference/android/os/Handler.html).
> I`d probably this way:
>
> public MainActivity extends Activity{
>  ....
> final static int UPDATE_STATIONS = 1;
>
> final Handler mainActivityHandler = new Handler(){
>
>  public handleMessage(Message msg){
>  switch(msg.what){
>                case UPDATE_STATIONS:
>                String sname = msg.peekData().getString("StationName");
>                String sloc = msg.peekData().getString("StationLoc");
>                String ids = imsg.peekData().getString("Sid");
>                String dist = imsg.peekData().getString("Distance");
>                String stype = msg.peekData().getString("Types");
>                 Stations station = new Stations
> (sname,sloc,ids,dist,stype);
>                stations.add(station);
>                aa.notifyDataSetChanged();
>                 break;
>  }
> }
>
>
> public class StationReceiver extends BroadcastReceiver{
>        @Override
>        public void onReceive(Context context, Intent intent){
>
>                 Message mes = Mesage.obtain(mainActivityHandler,
> UPDATE_STATIONS);
>                Bundle data = mes.peekData();
>                data.putString("StationName", intent.getExtras
> ().getString("StationName"));
>                data.putString("StationLoc", intent.getExtras
> ().getString("StationLoc"));
>                data.putString("Sid", intent.getExtras().getString
> ("Sid"));
>                data.putString("Distance", intent.getExtras().getString
> ("Distance"));
>                data.putString("Types", intent.getExtras().getString
> ("Types"));
>               mainActivityHandler.sendMessge(mes);
>               mes = null;
>        }
>    }
>
> }
>
> Or to be more effective:)
>
> public MainActivity extends Activity{
>  ....
> final static int UPDATE_STATIONS = 1;
>
> final Handler mainActivityHandler = new Handler(){
>
>  public handleMessage(Message msg){
>  switch(msg.what){
>                case UPDATE_STATIONS:
>                String sname = msg.peekData().getString("StationName");
>                String sloc = msg.peekData().getString("StationLoc");
>                String ids = imsg.peekData().getString("Sid");
>                String dist = imsg.peekData().getString("Distance");
>                String stype = msg.peekData().getString("Types");
>                 Stations station = new Stations
> (sname,sloc,ids,dist,stype);
>                stations.add(station);
>                aa.notifyDataSetChanged();
>                 break;
>  }
> }
>
>
> public class StationReceiver extends BroadcastReceiver{
>         Weakreference<Handler> mHandler = new WeakReference<Handler>
> (MainActivity.this.mainActivityHandler);
>         @Override
>        public void onReceive(Context context, Intent intent){
>                 Handler target = mHandler.get();
>                if(target != null){
>                Message mes = Mesage.obtain(target, UPDATE_STATIONS);
>                Bundle data = mes.peekData();
>                data.putString("StationName", intent.getExtras
> ().getString("StationName"));
>                data.putString("StationLoc", intent.getExtras
> ().getString("StationLoc"));
>                data.putString("Sid", intent.getExtras().getString
> ("Sid"));
>                data.putString("Distance", intent.getExtras().getString
> ("Distance"));
>                data.putString("Types", intent.getExtras().getString
> ("Types"));
>               target.sendMessge(mes);
>               mes = null;
>              }
>        }
>    }
>
> }
> }
>
>
> I hope this would help.
>
> On 12 янв, 22:17, Tommy <droi...@gmail.com> wrote:
> > I have created an activity that calls a service. This service receive
> > an XML feed and parse the info. Each time I get the info for a new
> > station i want to send the details (Name,Id,Location all as string)
> > back to my main activity so it can load it inside a list view. When I
> > run my code inside the main activity it works. When I move it to a
> > service I cant send the data back. This is what I have tried.
> >
> > After getting the current station info from I do this:
> > submitStation(namer, loc, ids, dis, types);
> >
> > then:
> >
> > private void submitStation(String names, String loca, String idss,
> > String diss, String typess){
> >
> >         Intent intent = new Intent(NEW_STATION_LISTING);
> >         intent.putExtra("StationName",names);
> >         intent.putExtra("Sid", loca);
> >         intent.putExtra("StationLoc", idss);
> >         intent.putExtra("Distance", diss);
> >         intent.putExtra("Types", typess);
> >
> >         sendBroadcast(intent);
> >
> > }
> >
> > Now in my main activity I have this:
> >
> >  public class StationReceiver extends BroadcastReceiver{
> >         @Override
> >         public void onReceive(Context context, Intent intent){
> >
> >                 String sname =
> intent.getExtras().getString("StationName");
> >                 String sloc = intent.getExtras().getString("StationLoc");
> >                 String ids = intent.getExtras().getString("Sid");
> >                 String dist = intent.getExtras().getString("Distance");
> >                 String stype = intent.getExtras().getString("Types");
> >                 Stations station = new
> Stations(sname,sloc,ids,dist,stype);
> >                 stations.add(station);
> >                 aa.notifyDataSetChanged();
> >         }
> >     }
> >
> > Any help is greatly appreciated!
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>
-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to