私のアプリでは、ユーザーにファイルをダウンロードさせます。ユーザーが気づいている長い行動以来、私はサービスを使用してフォアグラウンドサービスとして開始することに決めました。私はサービスを起動し、ダウンロードを終了して終了し、すべての時間を実行しない。StopForegroundはフォアグラウンドサービスを停止しません
私の主な活動から、私がサービスを開始しようとしているコールです。ここで
Intent intent = new Intent(this, typeof(DownloaderService));
intent.PutExtra("id", ID);
StartService(intent);
iがフォアグラウンドサービスとしてサービスを開始する方法で、これはDownloaderServiceクラス内ここ
public override void OnCreate()
{
//Start this service as foreground
Intent notificationIntent = new Intent(this, typeof(VideoDownloaderService));
PendingIntent pendingIntent = PendingIntent.GetActivity(this, 0,
notificationIntent, 0);
Notification notification = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.Icon)
.SetContentTitle("Initializing")
.SetContentText("Starting The Download...")
.SetContentIntent(pendingIntent).Build();
StartForeground(notificationID, notification);
}
は私がダウンロード方式でなければなりません
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
var id = intent.GetStringExtra("id");
Task.Factory.StartNew(async() => {
await download(id);
StopForeground(false);
});
return StartCommandResult.NotSticky;
}
意図を処理する方法です非同期。
ここで私の問題は、サービスが正常に起動しないことです。download(id)
メソッドは正常に終了しますが、アプリを終了しても(これは私が望むものです)。しかし、StopForeground(false);
への呼び出しの後でも動作し続けます。後で実行する必要はありません。これはリソースを消費するため、システムはフォアグラウンドサービスであるため、簡単には終了しません。
私のサービスがAndroidデバイスマネージャーで動作していて、私のアプリがまだVS2015のデバッグで実行されているのがわかりました。
サービスを停止する他の方法はありますか?
こと動作していないようで、私はまだプロセスを見ることができ、vsはまだデバッグしています。私はOnDestroy()メソッドをオーバーライドしようとしましたが、メソッドが呼び出されているのがわかりますが、プロセスは死ぬことはありません。 –
Xamarin/C#の世界では、物事は異なるかもしれません。それは私がよく知っているように私の心は "普通のAndroid Java"に書かれていました。 –
xamarin.androidは本質的にjavaバージョン上のポートなので、同じように動作しなければなりません。 –