Обычно я не задаю вопросы на таких форумах, как этот, но сегодня мое разочарование достигло неба.
Я пытаюсь реализовать решение, которое позволит мне обновлять список обменных курсов в моем приложении каждый час/день (не имеет значения). Я искал ответ на свою проблему на многих форумах, но, несмотря на то, что у других людей была такая же проблема, когда onReceive не вызывался, ни один из ответов мне не помог.
В настоящее время я пытаюсь запустить широковещательный приемник, который запускается методом SetRepeating в AlarmManager. Мой код для основного действия + Receiver + Manifest выглядит следующим образом:
Основной метод (просто блок кода с запуском будильника):
var lvarManager = (AlarmManager)GetSystemService (Context.AlarmService);
Intent lvarCurrencyIntent = new Intent (this, typeof(CurrencyUpdateService));
var lvarPendingIntent = PendingIntent.GetBroadcast (this, 0, lvarCurrencyIntent, PendingIntentFlags.CancelCurrent);
lvarManager.SetRepeating (AlarmType.Rtc, 1000, 5000, lvarPendingIntent);
Получатель:
public class CurrencyUpdateService : BroadcastReceiver
{
public override void OnReceive (Context context, Intent intent)
{
Toast.MakeText (context, "Running", ToastLength.Short).Show ();
}
}
Манифест:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="SplitTheBill.SplitTheBill" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="16" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application android:label="SplitTheBill" android:icon="@drawable/groups"></application>
<receiver android:process=":remote" android:name=".CurrencyUpdateService"/>
<provider android:name="mono.MonoRuntimeProvider" android:exported="false" android:initOrder="2147483647" android:authorities="StockService.StockService.mono.MonoRuntimeProvider.__mono_init__" />
I want to state that I'm a somewhat new user of Xamarin and as it quite succesfully makes shure that you don't touch Manifest files, I only added the line:
<receiver android:process=":remote" android:name=".CurrencyUpdateService"/>
Я попытался запустить код в свежем решении, и это не сработало. Я безуспешно пытался использовать различные типы сигналов тревоги и сервисов.
Не стесняйтесь предлагать свои собственные решения и смеяться мне в лицо за очевидные вопросы;)