在后台运行的 Android 应用不需要 Activity

Posted

技术标签:

【中文标题】在后台运行的 Android 应用不需要 Activity【英文标题】:Activity not required for Android app running in the background 【发布时间】:2020-10-28 12:09:32 【问题描述】:

在运行不需要 Activity 并在后台运行的 Xamarin android 应用时,Visual Studio 中发生错误。

No Launchable Activity:此项目不包含任何活动 标记为 MainLauncher。它已部署到设备,但没有 活动将启动。

要将活动标记为可启动,请为其添加 [Activity] 属性 与 MainLauncher = true:

[Activity (MainLauncher = true)] 公共类 MyActivity : Activity

下面是我的代码

[Application(Label = "@string/app_name")]
    public class Application : Android.App.Application
    
        public Application(IntPtr javaReference, JniHandleOwnership transfer)
           : base(javaReference, transfer)
        
        

        public override void OnCreate()
        
            base.OnCreate();

            Xamarin.Essentials.Platform.Init(this);      
            Intent oaServiceIntent = new Intent(this, typeof(MainApplicationService));
            StartService(oaServiceIntent);
        

即使不需要,我也必须创建一个活动吗?

【问题讨论】:

根据我的研究,您需要创建一个活动为MainLauncher =true,然后您才能打开一个服务。 【参考方案1】:

为了让用户启动您的应用,您必须至少有一个Activity,并且它必须在清单中有一个 ACTION=MAIN 和 CATEGORY=LAUNCHER 的条目,以便它显示在主屏幕上。

如果用户无法手动启动您的应用,则该应用无法启动,并且不会运行任何后台组件(ServiceBroadcastReceiver 等)。

Application 实例仅在 Android 创建操作系统进程来托管您的应用程序时创建,并且仅当用户在安装后手动启动您的应用程序至少一次时才会发生这种情况。

【讨论】:

以上是关于在后台运行的 Android 应用不需要 Activity的主要内容,如果未能解决你的问题,请参考以下文章

需要在android中每分钟运行一个后台任务

当android应用程序后台运行时如何在android中隐藏视图(在后台运行时不停止android拍摄快照)[重复]

如何让我的 android 应用程序在后台运行?

我可以完全在后台服务中运行 Android GeoFencing 吗?

如何使用libGDX在iOS / Android后台运行应用程序

Android四大组件之Service的介绍