C# Android服务在重新启动时不会重新启动;“应用程序已停止”;消息

C# Android服务在重新启动时不会重新启动;“应用程序已停止”;消息,c#,android,xamarin,android-service,C#,Android,Xamarin,Android Service,我正在使用AlarmManager的服务,该服务每30分钟触发一次我的“服务接收器”用于安排通知。出于测试的目的,我降低了此间隔。我的应用程序及其服务运行良好,能够发送通知。但是,重新启动后,我的服务突然停止,并发送消息说“应用程序停止工作” 在过去的12个小时里,我一直在试图解决这个问题。我怀疑这个问题在RebootReceiver或我的清单中。但是代码很简单,适用于其他人 我的应用程序清单: <?xml version="1.0" encoding="utf-8"?> &

我正在使用AlarmManager的服务,该服务每30分钟触发一次我的“服务接收器”用于安排通知。出于测试的目的,我降低了此间隔。我的应用程序及其服务运行良好,能够发送通知。但是,重新启动后,我的服务突然停止,并发送消息说“应用程序停止工作”

在过去的12个小时里,我一直在试图解决这个问题。我怀疑这个问题在RebootReceiver或我的清单中。但是代码很简单,适用于其他人

我的应用程序清单:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Namaz_Pro.Namaz_Pro" android:versionCode="1" android:versionName="1.0" android:installLocation="preferExternal">
    <uses-sdk android:minSdkVersion="17" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <application android:label="Namaz Pro">

        <receiver android:name=".ServiceReceiver" />
        <receiver android:name=".NotificationPublisher" />
    <receiver android:name=".RebootReceiver"
              android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
      <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
       <action android:name="android.intent.action.BOOT_COMPLETED" />
      <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
      </intent-filter>
    </receiver>
    <service android:name=".NotificationService"/>
    </application>
</manifest>
我的服务:

[Service]
    class NotificationService : Android.App.Service
    {



        public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
        {



            var alarmIntent = new Intent(this, typeof(ServiceReceiver));
            var pending = PendingIntent.GetBroadcast(this, 1234567, alarmIntent, PendingIntentFlags.UpdateCurrent);

            var alarmManager = GetSystemService(AlarmService) as AlarmManager;
            alarmManager.SetRepeating(AlarmType.RtcWakeup, App_Code.helperMethods.CurrentTimeMillis() + 10000, 60000 , pending);


            return StartCommandResult.NotSticky;
        }
        public override void OnDestroy()
        {
            base.OnDestroy();

            //Log.Debug(TAG, "Simple Service Destroyed at {0}.", DateTime.UtcNow);
        }



        public override IBinder OnBind(Intent intent)
        {

            return null;
        }
    }
我的服务接收人:

[BroadcastReceiver]
    class RebootReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            if ("android.intent.action.BOOT_COMPLETED".Equals(intent.Action))
            {

                Intent startServiceIntent = new Intent(context, typeof(NotificationService));
                context.StartService(startServiceIntent);
            }

        }
    }
[BroadcastReceiver]
public class ServiceReceiver : BroadcastReceiver
{
        notificationHelper.setUpNotifications(Android.App.Application.Context);

    }
}

Xamarin使用属性
BroadcastReceiver
Service
生成应用程序清单。它们是配置清单的不同方式(如
活动
属性)。我想,你已经张贴了你的手工编辑的一个。你能检查一下生成的吗?也许您的服务配置看起来不像您期望的那样。您可以在
/obj/Debug/android/Appmanifest.xml
@Sven MichaelStü中找到生成的应用程序清单,您看到的是我生成的清单吗?接收器和服务包括两次。也许尝试摆脱这些重复,然后再试一次。@Sven MichaelStübe但这是生成时自动生成的代码。我如何编辑它!您是否建议手动编辑?否。请保留手动编辑并删除属性,或者使用属性对其进行完全配置。它们具有属性,并且还存在一个
intentfilteratAttribute
。由您决定。Xamarin使用属性
BroadcastReceiver
Service
生成应用程序清单。它们是配置清单的不同方式(如
活动
属性)。我想,你已经张贴了你的手工编辑的一个。你能检查一下生成的吗?也许您的服务配置看起来不像您期望的那样。您可以在
/obj/Debug/android/Appmanifest.xml
@Sven MichaelStü中找到生成的应用程序清单,您看到的是我生成的清单吗?接收器和服务包括两次。也许尝试摆脱这些重复,然后再试一次。@Sven MichaelStübe但这是生成时自动生成的代码。我如何编辑它!您是否建议手动编辑?否。请保留手动编辑并删除属性,或者使用属性对其进行完全配置。它们具有属性,并且还存在一个
intentfilteratAttribute
。这取决于你。