从后台

时间:2018-05-25 06:59:49

标签: c# android xamarin.forms xamarin.android

我已经在我的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代码启动?

注意:请注意,这是一个带有用户界面的“普通”用户应用,所以它不是真正的服务。作为Google的开发人员文档状态(https://developer.android.com/guide/components/services),不建议将其作为服务启动,因为它将在主线程中运行。我的应用应该使用单独的线程。

1 个答案:

答案 0 :(得分:0)

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

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