Я создаю приложение для отслеживания времени в .net maui. И я хочу запустить таймер, продолжая даже приложение минимизировать, поэтому я создаю услуги переднего плана Android в Мауи. И это также работа, но моя проблема заключается в том, что я хочу уведомлять пользовательский интерфейс за каждую минуту, чтобы я мог позвонить в свой API для сохранения данных.
и для обновления UI я использую broadcastreceiver , но on-out-receive не вызывает:
Я создаю приложение для отслеживания времени в .net maui. И я хочу запустить таймер, продолжая даже приложение минимизировать, поэтому я создаю услуги переднего плана Android в Мауи. И это также работа, но моя проблема заключается в том, что я хочу уведомлять пользовательский интерфейс за каждую минуту, чтобы я мог позвонить в свой API для сохранения данных. и для обновления UI я использую [b] broadcastreceiver [/b], но [b] on-out-receive [/b] не вызывает:
[code]//**Service side code:** void SendProgressUpdate(int progress) { try { var intent = new Intent("com.foreground.app.PROGRESS_UPDATE"); intent.PutExtra("progress", progress); AndroidCall.Application.Context.SendBroadcast(intent); } catch (Exception ex) { throw; } }
[BroadcastReceiver(Enabled = true, Exported = false,DirectBootAware = true)] [IntentFilter(new[] { "com.foreground.app.PROGRESS_UPDATE" })] public class ProgressBroadcastReceiver : BroadcastReceiver { public event Action ProgressUpdated;
public override void OnReceive(Context context, Intent intent) { if (intent.Action == "com.foreground.app.PROGRESS_UPDATE") { int progress = intent.GetIntExtra("progress", 0); Log.Debug("ProgressBroadcastReceiver", $"Progress received: {progress}"); ProgressUpdated?.Invoke(progress); } } }
//**UI side code** void OnProgressUpdated(int progress) { System.Diagnostics.Debug.WriteLine($"Progress update received: {progress}"); lblProgress.Text = $"Progress: 000%"; // Update UI on main thread Device.BeginInvokeOnMainThread(() => { // e.g. update a ProgressBar or Label lblProgress.Text = $"Progress: {progress}%"; }); } [/code] [b] Пожалуйста, помогите мне решить эту проблему [/b]