سؤال

أحتاج إلى عرض مدة زمنية على عدد قليل من أنشطتي داخل التطبيق. يبدأ الموقت عندما يبدأ أحد النشاط.

  • يجب أن أستخدم الخدمة للموقت؟
  • هل هذا افضل طريق ؟
  • أو يجب أن أبدأ الخيط من أحد الأنشطة؟
هل كانت مفيدة؟

المحلول

أعتقد في حالة الاستخدام التي تصفها ستكون الأفضل متجر طوابع زمنية (انظر مخزن البيانات) و حساب deltas لاستخدام واجهة المستخدم الرسومية. إذا كنت بحاجة إلى عرض ساعة حقيقية في أحد الأنشطة الخاصة بك، فيمكنك إنشاء مؤشر ترابط منفصل في هذا النشاط فقط لتحديث الساعة.

نصائح أخرى

حسنا، اعتمادا على مقدار العمل الواجهة الذي تحتاجه لعرض تقدمك، أود أن أبدأ مؤشر ترابط ضمن النشاط ثم إنشاء مؤقت يتحقق من حالة تقدم الخيط وتحديث الواجهة حسب الحاجة. الخدمات جيدة لمهام الخلفية التي لا تحتاج إلى الكثير من إشعار الواجهة / التحديثات.

إليك مثال من المشروع الذي أعمل حاليا (updatelistunnable) فقط استدعاء "NotifyDataSetChanged ()" على محول قائمتي. أفعل ذلك عدة مرات في الكود لذلك أنا مغلقة في الفصل. أيضا، UpdateHandler هو مجرد معالج منتظم نموذج):

@Override
public void run() {
    Timer updateProgressTimer = null;
    UpdateItem currentItem = null;

    for(int i = 0; i < items.size(); i++) {
        currentItemIndex = i;
        currentItem = items.get(i);

        if (currentItem.isSelected() == true) {
            updateProgressTimer = new Timer();

            updateProgressTimer.scheduleAtFixedRate(new TimerTask() {
                @Override
                public void run() {
                    updateHandler.post(new UpdateListRunnable());
                }
            }, 0, 2000); // check every 2 seconds

            lookupDb.downloadUpdate(currentItem);

            currentItem.setUpToDate(true);
            currentItem.setStatusCode(UpdateItem.UP_TO_DATE);
            currentItem.setProgress(0);
            updateProgressTimer.cancel();

            updateHandler.post(new UpdateListRunnable());
        } // end if its the database we are hosting on our internal server
    } // end for loop through update items

    currentItemIndex = -1;
} // end updateThread run
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top