سؤال

لدي مشكلة غريبة إلى حد ما.لدي خدمة غير مقيدة أتصل بها باستخدام الرمز أدناه من نشاطي الرئيسي عند فتح التطبيق.

//some code checks if the service is awake. if not then the code below is called        
Intent serviceIntent = new Intent(this, SMS_Listener_Service.class);
startService(serviceIntent);

عندما تصل رسالة نصية قصيرة جديدة إلى الخدمة، تنتظر لمدة 3 ثوانٍ عبر مؤقت للتأكد من قيام مراقب المحتوى بحفظ البيانات في قاعدة بيانات الرسائل القصيرة الداخلية.وبعد ذلك يقوم باستدعاء خدمة النية للقيام بالمهمة الثقيلة.

لأسباب غير معروفة، ستتوقف الخدمة أحيانًا وتتوقف عند "إعادة التشغيل (انظر الصورة)"

والشيء الغريب هو أنه حتى محاولة فرض إيقاف الخدمة في قسم التطبيقات لا تعمل.يختفي للحظات ثم يظهر مرة أخرى بنفس الرسالة.استخدام stopService في التعليمات البرمجية لا يعمل أيضًا ولا يتم استدعاء طريقة OnDestroy داخل الخدمة أبدًا.الطريقة الوحيدة للتغلب عليها هي إعادة تشغيل الهاتف.

المشكلة هي أنه عندما يكون في هذه الحالة فإنه لا يعمل. (يقصد تحليل الرسائل القصيرة الواردة)

أقوم بتشغيل هذا على Galaxy Note 3 بنظام Android 4.3

"Hanging Service"

أشك في أن خدمة Intentservice التي تقوم بالتحليل الفعلي لم تكتمل، وبالتالي لا يتم استدعاء استدعاء الخدمة لإيقاف نفسها أبدًا.

سؤالي هو، هل هناك طريقة لإجبار خدمة النية التي تم تعليقها على التوقف؟

هذا هو الرمز الموجود في StartCommand في الخدمة

  public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    if (!blnAutoSyncisEnabled) {
        stopSelf();
        return 0;
    } else {
        return START_STICKY;

    }

 }

عرض أكثر تفصيلا لنفس السؤال هنا https://stackoverflow.com/posts/21077517/edit

هل كانت مفيدة؟

المحلول

قد لا يكون هذا حلاً أنيقًا للغاية ولكن يمكنك الاتصال به stopSelf() مباشرة في الخدمة onCreate() الطريقة والتعامل مع الإجراء الفعلي فيه onDestroy() قبل الاتصال super.onDestroy().

واجهت مشكلة مماثلة وقمت بإصلاحها بهذه الطريقة.ربما هذا سوف يحل مشكلتك أيضا.حظ سعيد.;)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top