android - 从应用程序类启动服务

标签 android

<分区>

Possible Duplicate:
Can I startService from Application#onCreate()?

我们可以从应用程序类启动服务吗?

我想在我的应用程序启动时启动一个服务。因此,我可以为此使用我的应用程序类,而不是从启动 Activity 启动服务吗?谢谢。

我尝试的是内部应用程序类:

public void onCreate() {
    super.onCreate();


    Log.i("Logger", "Service Starting");
    Intent errorLoggerService = new Intent(getApplicationContext(),
            ErrorLoggerService.class);
    getApplicationContext().startService(errorLoggerService);
}

最佳答案

是的,您可以在 API 标签 26 之前这样做,但现在不行了。

如果你的API版本低于26

public class MyApplication extends Application {
    public void onCreate() {
        super.onCreate();
        startService(new Intent(this, MyService.class));
    }
}

编辑 不要调用 getApplicationContext(),只调用 startService()。此外,请确保您已在 list 中声明该服务。

API 标签 26 及以上

编辑 2 来自官方谷歌文档:https://developer.android.com/guide/components/services.html#StartingAService

注意:如果您的应用以 API 级别 26 或更高级别为目标,除非应用本身位于前台,否则系统会对使用或创建后台服务施加限制。如果应用程序需要创建前台服务,则应用程序应调用 startForegroundService()。该方法创建了一个后台服务,但该方法向系统发出信号,表明该服务会将自己提升到前台。创建服务后,服务必须在五秒内调用其 startForeground() 方法。

因此,现在您无法从应用程序启动后台服务。只有 GUI 组件能够启动后台服务。

或者,您可以从应用程序等后台组件启动前台服务。

关于android - 从应用程序类启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12381977/

相关文章:

android - 如何获取放置在另一个 View 中的 EditText 值

android - 构建android源代码

android - 在布局之上绘制自定义 View

android - 由 : java. lang.UnsupportedOperationException 引起:无法转换为维度:类型=0x12

android - 如何实时查看互联网接入情况?

java - Android Studio 不打开 JDK 工作正常

java - 保存切换按钮的状态

Android - 如何将模拟器复制给 friend 进行测试

android - 使用 jquery mobile 和 phonegap 在 android 4.0 webview 中聚焦时创建输入字段的副本

c# - Android - 手机上的布局与设计器的尺寸不同