إنذارمانجر إطلاق النار في المحاكي ولكن ليس على الجهاز المادي

StackOverflow https://stackoverflow.com/questions/3128236

سؤال

لدي تطبيق يدعو الإنذار

Intent intent;
intent = new Intent(context, MyEventReceiver.class);  
PendingIntent appIntent = PendingIntent.getBroadcast(context, 0,
intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
appIntent);

وفي أكثر من مجرى الإدخال الإلزامي

    <receiver android:name=".MyEventReceiver"
   android:process=":remote" />

MyeventReceiver يبدو هكذا

public class MyEventReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        try
        {
            // DO SOME WORK
        }
        catch (Exception e)
        {
            Log.e("MyEventReceiver", e.getMessage().toString());
        }
    }
}

عندما يتم تنشيط المنبه ، يجب أن يبدأ MyEventReceiver ويفعل شيئًا حتى لو لم يكن طلبي قيد التشغيل. في المحاكي ، هذا هو الحال ولكن على الجهاز الفعلي ليس هذا هو الحال.

على سبيل المثال ، سأبدأ myapplication في المحاكي وفي DDMS يمكنني رؤية عملية تشغيل myapplication. من داخل myapplication أضيف إنذارًا ثم ضمن DDMs اقتل عملية myapplication. عندما يقوم المنبه بإطلاق النار على MyeventReceiver يقوم بعمله وفي DDMS أرى عمليتين ، myapplication ، myapplication: عن بعد.

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

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

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

المحلول

وفي أكثر من مجرى الإدخال الإلزامي

android:process=":remote" هو مضاد للضرب. الرجاء إزالته. بسرعة.

على جهاز فعلي إذا بدأت myapplication ، أضف إنذارًا ثم اقتل العملية باستخدام قاتل المهمة

يقوم قتلة المهام بإزالة إنذارات التطبيق أيضًا ، على الرغم من حل هذه المشكلة باستخدام Android 2.2.

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