פורסם 2012 בדצמבר 2212 שנים היי אנשים, כחלק מאפליקציה שאני עובד עליה עכשיו אני צריך ליצור טיימר פשוט. ניסיתי לעשות זאת כך: private void starTimer() { // TODO Auto-generated method stub new AsyncTask<Integer, Void, Boolean>() { @Override protected Boolean doInBackground(Integer... params) { try { Thread.sleep(params[0]); } catch (InterruptedException e) { e.printStackTrace(); } return true; } @Override protected void onPostExecute(Boolean result) { while(true) { sec++; showTime(); if(sec==60) { min++; sec=0; showTime(); } if(min==60) { hr++; min=0; showTime(); } } } }.execute(1000); } private void showTime() { // TODO Auto-generated method stub tvTimer.setText(hr + ":" + min + ":" + sec); } הבעיה שהטיימר לא משתנה ואחרי כמה שניות זה מעיף אותי מהאפליקציה. יש הצעות? תודה ושבוע טוב. שחר.
פורסם 2012 בדצמבר 2212 שנים אתה לא משתמש נכון ב-AsyncTask. ראה דוגמה נכונה כאן:http://developer.android.com/reference/android/os/AsyncTask.htmlבשביל לשלוח עדכונים לטיימר אתה צריך לדרוס את הפונקציה onProgressUpdate, והפונקציה doInBackground צריכה לקרוא כל כמה זמן ל-publishProgress. הפונקציה onPostExecute נקראת רק פעם אחת בסיום העבודה (כש-doInBackground מסיימת לרוץ).
פורסם 2013 במרץ 812 שנים אתה ממש אבל ממש לא אמור להשתמש בAsyncTask בשביל זה. אין לך פה שום עבודה שמתבצעת.בהצלחה:http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long)
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.