【发布时间】:2018-05-25 06:59:49
【问题描述】:
我已向我的 Xamarin Forms Android 应用程序添加了功能,以使其在设备(重新)启动时重新启动。这工作正常(应用程序已重新启动)。
这是我的 BroadcastReceiver 的代码:
[BroadcastReceiver]
[IntentFilter(new[] { Intent.ActionBootCompleted })]
public class BootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
if (intent.Action == Intent.ActionBootCompleted)
{
Intent newTaskIntent = new Intent(context, typeof(MainActivity));
newTaskIntent.AddFlags(ActivityFlags.NewTask);
newTaskIntent.AddFlags(ActivityFlags.FromBackground);
context.StartActivity(newTaskIntent);
}
}
}
如您所见,我添加了 FromBackground 标记以指示应用程序不是由用户启动,而是从后台进程启动的。
我想要实现的是,当应用程序不是由用户启动时,它应该被推回并显示主屏幕,使用以下代码(在 MainActivity 的 OnCreate 事件中):
this.MoveTaskToBack(true);
如何检查应用不是由用户启动,而是由 BroadcastReceiver 代码启动?
注意:请注意,这是一个带有 UI 的“普通”用户应用,因此它并不是真正的服务。正如 Google 的开发人员文档所述 (https://developer.android.com/guide/components/services),不建议将其作为服务启动,因为它将在主线程中运行。我的应用应该使用单独的线程。
【问题讨论】:
标签: c# android xamarin.forms xamarin.android