إنذارمانجر إطلاق النار في المحاكي ولكن ليس على الجهاز المادي
-
30-09-2019 - |
سؤال
لدي تطبيق يدعو الإنذار
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.