CountdownTimer في موضوع منفصل مع وبير

0

أحاول تنفيذ العد التنازلي لتحذير المستخدمين عند خروجهم من منطقة ما. للقيام بذلك ، أحاول استخدام CountdownTimer في JobIntentService ؛ ومع ذلك ، هذا يعني أن CountdownTimer في مؤشر ترابط بدون وبير مما تسبب في طرح استثناء. java.lang.RuntimeException: Can't create handler inside thread Thread[AsyncTask #1,5,main] that has not called Looper.prepare()

لقد عثرت على هذا السؤال في CountdownTimer في سلسلة الرسائل الخاصة به مع looper ، ولكن الإجابة هناك تتراوح من 6-7 عامًا وأريد استخدام أفضل الممارسات لمؤشرات الترابط والمعالجات.

إذا كان أي شخص يمكن أن يعطي نظرة ثاقبة حول كيفية القيام بذلك بطريقة أنظف ، سيكون موضع تقدير بالتأكيد.

1 إجابة

0

قم دائمًا بإنشاء معالج باستخدام Looper.

1) معالج واجهة مستخدم أكبر لتحديث واجهة المستخدم

Handler mainThreadhandler = new Handler(context.getMainLooper());
mainThreadhandler.post(new Runnable(){
   public void run(){
    // UI work
   }
});

2) إنشاء معالج مؤشر الترابط لتشغيل مهمة الخلفية.

HandlerThread bgThread = new HandlerThread("MyHandlerThread");
bgThread.start();
Handler bgHandler = new Handler(bgThread.getLooper());
bgHandler.post(new Runnable(){
   public void run(){
    // background work
   }
});

لا تنس التنظيف أثناء الانتهاء من النشاط.

@Override
public void onDestroy() {
  bgHandler.getLooper().quit();
  super.onDestroy();
}
:مؤلف
فوق
قائمة طعام