【问题标题】:Move Android app to back when started from background从后台启动时将 Android 应用程序移到后面
【发布时间】: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


    【解决方案1】:

    在您的意图中添加一些额外的值。您可以从活动中读取的某种标志。然后将该标志进一步传递到您的 Xamarin.Forms.App。然后,您可以检查该标志并查看应用程序是否由接收器启动。

    这里有一些代码类似于你想要完成的https://stackoverflow.com/a/44964328/1341538

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多