i have countdown timer counts down current time set user. although, want have ability access other apps or go home screen of device while having countdown timer run , continue update textview timer left in countdown. there way this? tried implementing service below don't know if right way accomplish task, did receive error.
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_count_down); // if (savedinstancestate != null){ // // } titletextview = (textview)findviewbyid(r.id.titletextview); timetextview = (textview)findviewbyid(r.id.timetextview); bundle getalarminfo = getintent().getextras(); titleofalarm = getalarminfo.getstring("title"); totaltime = getalarminfo.getstring("totaltime"); number = new bigdecimal(totaltime).tobiginteger(); actualtimefiniliazedinmilliseconds = number.intvalue(); titletextview.settext(titleofalarm); // countdown = new countdowntimer(actualtimefiniliazedinmilliseconds, timeinterval); // new updatecountdowntime().execute(); countdown = new countdowntime(actualtimefiniliazedinmilliseconds, timeinterval); countdown.start(); // startservice(new intent(getapplicationcontext(), countdown.class)); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_count_down, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } public class countdowntime extends countdowntimer { /** * @param millisinfuture number of millis in future call * {@link #start()} until countdown done , {@link #onfinish()} * called. * @param countdowninterval interval along way receive * {@link #ontick(long)} callbacks. */ public countdowntime(long millisinfuture, long countdowninterval) { super(millisinfuture, countdowninterval); } @override public void ontick(long millisuntilfinished) { long millis = millisuntilfinished; hms = string.format("%02d:%02d:%02d", timeunit.milliseconds.tohours(millis), timeunit.milliseconds.tominutes(millis) - timeunit.hours.tominutes(timeunit.milliseconds.tohours(millis)), timeunit.milliseconds.toseconds(millis) - timeunit.minutes.toseconds(timeunit.milliseconds.tominutes(millis))); timetextview.settext(hms); } @override public void onfinish() { intent goback = new intent(countdownact.this, listofalarms.class); startactivity(goback); finish(); } } @override protected void onpause() { super.onpause(); timetextview.settext(hms); } // public class countdown extends service{ // // public countdown () { // // } // // @override // public ibinder onbind(intent intent) { // return null; // } // // @override // public void oncreate() { // super.oncreate(); // // countdown = new countdowntime(actualtimefiniliazedinmilliseconds, timeinterval); // countdown.start(); // } // }
you need use service , broadcast receiver . have created example broadcast receiver .
check , let me know if have issues.
create service :timerservice.java
@override public int onstartcommand(intent intent, int flags, int startid) { //initialize , start counter countdown = new hokusfocuscountdowntimer(timedifference, 1000); countdown.start(); return super.onstartcommand(intent, flags, startid); } in mainactivity.java
/* * used receive updated time broadcast receiver * */ private final broadcastreceiver timebroadcaster = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { //method used update gui fields updategui(intent); } }; /** * update iu changing timer of focus hour * * @param intent focus hour timer value */ private void updategui(intent intent) { applog.showlog("update ui", "timer stopped"); if (intent.getextras() != null) { string focushms = intent.getstringextra(constants.hocus_focus_timer); focusmillisecond = intent.getlongextra(constants.hocus_focus_timer_milli_second, 0); txtfocushourtimer.settext("" + focushms); } } @override public void onresume() { super.onresume(); registerreceiver(timebroadcaster, new intentfilter( hokusfocuscountdowntimer.countdown_broadcast_receiver)); } @override public void onpause() { super.onpause(); try { unregisterreceiver(timebroadcaster); } catch (exception e) { e.printstacktrace(); } } hope answer helpful you
Comments
Post a Comment