rafinos Δημοσ. 20 Φεβρουαρίου 2015 Δημοσ. 20 Φεβρουαρίου 2015 Γεια σας παιδιά! Έχω μια εφαρμογή android φτιαγμένη σε webview (html+javascript). Eίναι η εφαρμογή που έχω στην υπογραφή μου. Έχω το εξής πρόβλημα. Όταν ας πούμε χτυπήσει το viber ή πάρουν τηλέφωνο όπως είναι λογικό εμφανίζεται στην οθόνη το μήνυμα του viber ή το εν λόγω τηλέφωνο. Κάθε φορά που κλείνει η εφαρμογή την έχω ορίσει να τρέχει από την αρχή (ακόμα και στην onPause κατάσταση και αυτό γιατί δεν ξέρω πως να κάνω το χρονόμετρο να σταματάει). Υπάρχει κάποιος τρόπος να παγώνω την εφαρμογή (σε στυλ pause) και να συνεχίζει από εκεί που σταμάτησε; Μπορείτε να δοκιμάσετε την εφαρμογή κατεβάζοντάς την από εδω. Πιστέψτε με δεν βάζω το λινκ για λόγους διαφήμισης κτλ...... Ξέρω ότι θα πρέπει να σας στείλω κώδικα για να δείτε τι μπορεί να γίνει απλά προς στιγμήν ρωτάω μήπως υπάρχει κάποιος έτοιμος αυτοματοποιημένος τρόπος. Αν όχι θα πάμε και στον κώδικα.
Lanike71 Δημοσ. 20 Φεβρουαρίου 2015 Δημοσ. 20 Φεβρουαρίου 2015 Γιατί δε βάζεις κώδικα να δει κάποιος που ξέρει; Σε πιστεύω ότι δεν κάνεις διαφήμιση, αλλά γιατί να εκτελέσει κάποιος άγνωστο κώδικα στη συσκευή του;
rafinos Δημοσ. 20 Φεβρουαρίου 2015 Μέλος Δημοσ. 20 Φεβρουαρίου 2015 Την εφαρμογή την έχω στο slideme.org (δεν την έχω βάλει ακόμα στο playstore λόγω των 25 δολαρίων). Επίσης μπορείτε να δοκιμάσετε μια online εκδοχή εδώ μόνο με chrome όμως επειδή χρησιμοποιώ sqlite για την αποθήκευση του score. https://dl.dropboxusercontent.com/u/179231917/mq_download_site/index.html
rafinos Δημοσ. 21 Φεβρουαρίου 2015 Μέλος Δημοσ. 21 Φεβρουαρίου 2015 Το timer ξεκινάει ως 100 και είναι μια πράσινη μπάρα που λιγοστεύει όσο περνάει ο χρόνος (για αυτό ήθελα να δείτε την εφαρμογή). Το παρακάτω ας πούμε πως γίνεται pause και να ξανασυνεχίζει το timer από εκεί που σταμάτησε; function countdown(){ $('#timer').css('width',timer + '%'); if(timer<=0){ if(game_type=="marathon"){ lives--; } $('#time_is_up').show(); AndAud.playAudio(wrong_audio, $("input[name='mute_hidden']").val()); clearTimeout(counter); setTimeout(doitagain,2000); return; } //Τι είδος παιχνιδιού είναι Marathon ή Time trial if(game_type=="marathon"){ if(c_answers < 10){ timer -= (100/10); //10 δευτερόλεπτα }else if(c_answers >= 10 && c_answers < 20){ timer -= (100/9); //9 δευτερόλεπτα }else if(c_answers >= 20 && c_answers < 30){ timer -= (100/8); //8 δευτερόλεπτα }else if(c_answers >= 30 && c_answers < 40){ timer -= (100/7); //7 δευτερόλεπτα }else if(c_answers >= 40 && c_answers < 50){ timer -= (100/6); //6 δευτερόλεπτα }else if(c_answers >= 50){ timer -= (100/5); //5 δευτερόλεπτα } }else if(game_type=="time_trial"){ timer -= (100/60) ; //60 δευτερόλεπτα } counter = setTimeout(countdown,1000); }
dancer_69 Δημοσ. 21 Φεβρουαρίου 2015 Δημοσ. 21 Φεβρουαρίου 2015 Για δες το παρακάτω: https://gist.github.com/bverc/1492672 Εμπεριέχει timer pause και resume, οπότε ίσως βοηθήσει.
Papakaliati Δημοσ. 21 Φεβρουαρίου 2015 Δημοσ. 21 Φεβρουαρίου 2015 (επεξεργασμένο) Δεν ξερω απο android, φανταζομαι ομως ειναι τοσο απλο αυτο που ζητας που δεν παιζει με 5 λεπτα googling να μην το βρεις. Μετα απο 2 λεπτα googling βρηκα οτι OnPause κανει cancel to timer και δεν μπορεις να το κανεις resume, μονο να δημιοργησεις καινουργιο, οποτε απλα θα κανεις ενα καινουργιο με χρονο αυτον που υπολειποτανε πριν το pause. Οποτε στο OnPause θα σωζεις τον χρονο του timer, και στο OnResume θα κανεις καινουργιο timer με τον χρονο που μενει. Επιπλεον, εχω να σχολιασω οτι το if(c_answers < 10){ timer -= (100/10); //10 δευτερόλεπτα }else if(c_answers >= 10 && c_answers < 20){ timer -= (100/9); //9 δευτερόλεπτα }else if(c_answers >= 20 && c_answers < 30){ timer -= (100/8); //8 δευτερόλεπτα }else if(c_answers >= 30 && c_answers < 40){ timer -= (100/7); //7 δευτερόλεπτα }else if(c_answers >= 40 && c_answers < 50){ timer -= (100/6); //6 δευτερόλεπτα }else if(c_answers >= 50){ timer -= (100/5); //5 δευτερόλεπτα } ειναι απιστευτα ασχημο στο ματι και σημαδι κακογραμμενου κωδικα. Δεν εχω συναντησει ποτε περιπτωση που να χρειαζεται πανω απο 2 else if max, αμα χρειαζεται περισσοτερα τοτε κατι κανεις λαθος και θα πρεπει να κοιταξεις να βρεις μια καλυτερη λυση. Εδω πολυ απλα μπορεις να πεις if (c_answers >= 50) timer -= (100/5); //5 δευτερόλεπτα else timer -= (100/( 10 - ParseInt(c_answers/10 ))); Επεξ/σία 21 Φεβρουαρίου 2015 από Papakaliati
rafinos Δημοσ. 21 Φεβρουαρίου 2015 Μέλος Δημοσ. 21 Φεβρουαρίου 2015 (επεξεργασμένο) Καταρχάς δεν είναι τόσο εύκολο όσο λες γιατί πολύ απλά εγώ δουλεύω σε javascript+html και το android δουλεύει σε java και πίστεψε με το OnPause όχι απλά δε μου "σκοτώνει" τον timer αλλά συνεχίζει να τρέχει κανονικά το webview από πίσω αν δεν το κάνω clear ακούγονται και οι ήχοι από τις λάθος απαντήσεις (λόγω χρόνου) ενώ είναι κλειστεί η εφαρμογή. Αυτό είναι που θέλω να αποφύγω το να κάνω clear τον timer απλά με javascript και να ξανατρέξω την εφαρμογή μου φαίνεται απλό αλλά δυστυχώς δεν μου αρκεί γιατί δε γίνεται με την OnPause να "πειράξω" κάτι μέσα στον κώδικα που τρέχει το webview. Όσο για το if έχεις δίκιο δεν είχα δώσει και πολύ βάση σε αυτό, ευχαριστώ. Το έχω έτσι ώστε να τρέχει κάθε φορά από την αρχή η το webview: @Override protected void onPause() { myWebView.clearCache(true); myWebView.clearHistory(); myWebView.loadUrl("about:blank"); super.onPause(); } @Override protected void onResume(){ myWebView.loadUrl("file:///android_asset/www/index.html"); super.onResume(); } και δοκίμασα αυτό αλλά φαινόταν σαν να τρέχει παράλληλα και το προηγούμενο webview καθώς ακουγόντουσαν οι ήχοι λάθους λόγω τέλος χρόνου της ερώτησεις αλλά εγώ έβλεπα την κεντρική οθόνη και μόλις πατούσα το back τότε εξαφανιζόταν το συγκεκριμένο μενού και μου εμφάνιζε το μήνυμα λάθους (μάλλον του άλλου webview). @Override protected void onPause() { myWebView.pauseTimers(); myWebView.onPause(); super.onPause(); } @Override protected void onResume() { myWebView.onResume(); myWebView.resumeTimers(); super.onResume(); } Όλα τα παραπάνω ίσως σας μπέρδεψαν για αυτό σας ζήτησα αν μπορείτε να δοκιμάσετε πρώτα λίγο την εφαρμογή. Και αν το κάνετε να έχετε κλειστό το wifi ώστε να μη σας βγάζει διαφημίσεις να μη λέτε ότι θέλω να τα αρπάξω (δισεκατομμύρια). Επεξ/σία 21 Φεβρουαρίου 2015 από rafinos
rafinos Δημοσ. 21 Φεβρουαρίου 2015 Μέλος Δημοσ. 21 Φεβρουαρίου 2015 (επεξεργασμένο) Παιδιά έκανα αυτό: @Override protected void onPause() { myWebView.pauseTimers(); super.onPause(); } @Override protected void onResume() { myWebView.resumeTimers(); super.onResume(); } Και πλεόν όταν πατάω το home button και μετά ξανανοίγω την εφαρμογή συνεχίζει από εκεί που το άφησα Μάλλον δούλεψε Στο if που μου έδωσες έχει λάθος το ParseInt στην javascript είναι parseInt. Επεξ/σία 22 Φεβρουαρίου 2015 από rafinos
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα