multithreading - onBackPressed and threads in android -


i've got thread running in listactivityand takes long data internet, maybe user wants quit , go back.

however, when press button, shows previous view, thread still remains in execution.

i override onbackpressed() method , set breakpointm while debugging see doesn't go through it, don't know else do...

any idea?

thank you

here code. basically, don't know why doesn't execute onkeypressed() if goes previous activity when y press button... code edit

  // package + imports public class listavideosactivity extends listactivity implements runnable {      private progressdialog pd;     private context mcontext;     private view header;     private view footer;     private vibrator vibrator;     private boolean firstime = true;      private thread thread;      private long playlistid;     private string playlisttitle;     protected int headerdrawable;      private playlist plist;      public static final string tag_pl_id = "id_playlist";     public static final string tag_pl_title = "title_playlist";     public static final string tag_pl_header = "header_playlist";      private sensormanager msensormanager;     private shakelistener mshakelistener;      /** called when activity first created. */     @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);          // context es el maintabactivity         mcontext = getparent();         maintabactivity.tabhost.gettabwidget().setvisibility(view.gone);          playlistid = getintent().getlongextra(tag_pl_id, 0l);         playlisttitle = getintent().getstringextra(tag_pl_title);         headerdrawable = getintent().getintextra(tag_pl_header, 0);          setloadingview();          thread = new thread(this);         thread.start();          createlistheader();          msensormanager = (sensormanager) getsystemservice(sensor_service);         mshakelistener = new shakelistener(msensormanager);      }      @override     protected void onpause() {         msensormanager.unregisterlistener(mshakelistener);         super.onpause();     }      @override     protected void onresume() {         super.onresume();         msensormanager.registerlistener(mshakelistener, msensormanager                 .getdefaultsensor(sensor.type_accelerometer),                 sensormanager.sensor_delay_game);     }      private void setloadingview() {          layoutinflater inflater = (layoutinflater) mcontext                 .getsystemservice(layout_inflater_service);         view layout = inflater.inflate(r.layout.videos_loading_dialog, null);          maintabactivity.tabhost.gettabwidget().setvisibility(view.gone);          setcontentview(layout);      }      private void createlistheader() {         layoutinflater inflater = (layoutinflater) mcontext                 .getsystemservice(layout_inflater_service);         header = inflater.inflate(r.layout.videos_list_header, null);         footer = inflater.inflate(r.layout.screen_footer, null);          ((imageview) header).setimageresource(headerdrawable);      }      @override     protected void onlistitemclick(listview l, view v, int position, long id) {          video video = (video) l.getitematposition(position);          intent intent = new intent(mcontext, bcplayeractivity.class);         bcplayeractivity.video = video;         mcontext.startactivity(intent);      }      public void run() {          plist = bcvideogetter.getplaylistbyid(playlistid);         if (plist != null) {             // hay lista             handler.sendemptymessage(1);         } else {             handler.sendemptymessage(0);         }      }      private handler handler = new handler() {         @override         public void handlemessage(message msg) {              switch (msg.what) {              case 0:                 toast.maketext(mcontext, r.string.nohosterror,                         toast.length_long).show();              case 1:                  if (firstime) {                     // shake                     mshakelistener.setforcethreshhold(1.9);                     mshakelistener                             .setonshakelistener(new shakelistener.onshakelistener() {                                 @override                                 public void onshake() {                                      if (pd == null || !pd.isshowing()) {                                         vibrator.vibrate(300);                                         updatevideoslist();                                     }                                  }                             });                      maintabactivity.tabhost.gettabwidget().setvisibility(                             view.visible);                      setcontentview(r.layout.videos_list);                      getlistview().addheaderview(header, null, false);                     getlistview().addfooterview(footer, null, false);                      setlistadapter(new videoslistadapter(mcontext,                             r.layout.videos_list_item, (arraylist) plist                             .getvideos()));                      vibrator = ((vibrator) getsystemservice(context.vibrator_service));                     firstime = false;                 } else {                     ((videoslistadapter) getlistadapter()).setitems((arraylist) plist.getvideos());                     ((videoslistadapter) getlistadapter())                             .notifydatasetchanged();                 }                  if (pd != null)                     pd.dismiss();                 break;             }          }     };      @override     public void onbackpressed() {          msensormanager.unregisterlistener(mshakelistener);         thread.interrupt();         pestanaprogramastvactivity.group.back();      }      public boolean oncreateoptionsmenu(menu menu) {          menuinflater inflater = getmenuinflater();         inflater.inflate(r.menu.news_list_menu, menu);          return true;      }      @override     public boolean onoptionsitemselected(menuitem item) {         switch (item.getitemid()) {         case r.id.update:              updatevideoslist();              break;         case r.id.settings:             intent settingsactivity = new intent(mcontext,                     settingsactivity.class);             startactivity(settingsactivity);             break;         }         return true;     }      private void updatevideoslist() {          if (pd == null || !pd.isshowing()) {             pd = progressdialog.show(mcontext, "", getresources().getstring(                     r.string.news_update), true);             thread = new thread(this);             thread.start();         }      } }  

thread.stop() deprecated method. can refer this document see how kill thread.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -