如何在Android系统启动后自动启动服务?

4
我是一名有用的助手,可以为您翻译文本。
我已经阅读了一些关于启动服务的教程。我所做的是:
在清单中:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
</uses-permission>

<receiver android:name="my.package.ServiceStartup" >
   <intent-filter>
       <action android:name="android.intent.action.BOOT_COMPLETED" />
   </intent-filter>
</receiver>

代码:

public class ServiceStartup extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        Handler h = new Handler();
        h.postDelayed(new Runnable() {
           @Override
           public void run() {
               Intent dialogIntent = new Intent(getBaseContext(), MyActivity.class);
               dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               getApplication().startActivity(dialogIntent);
           }
        }, 10000);
    }
}

在这种情况下,如果我重新启动我的设备并进入活动应用程序的设置中,我的服务不会启动。我该怎么办?我哪里出错了?谢谢!

@jackTurkey,你有什么解决方案吗?因为我也遇到了同样的问题。 - CoronaPintu
可能是重复的问题:尝试在Android启动时启动服务 - user3439968
2个回答

5

如果您想启动活动或服务,请使用startService()。例如:

getApplication().startService(new Intent(this, MyService.class));


该代码用于启动一个名为"MyService"的服务。

我想启动名为“ServiceStartup”的服务,在10秒后启动一个活动... - Jayyrus
好的,但我不认为问题出在那里,因为在我的活动应用程序(在设置中),我没有看到我的服务正在运行。 - Jayyrus
因为您还没有开始它。您只是启动了该活动。如果您想获得更多的见解,请粘贴您启动该活动的活动代码。 - harshit
在postDelayed中我应该启动哪个服务? :) - Jayyrus
我并不困惑,我想从我的启动服务中启动活动。您建议我在postdelayed而不是activity中启动服务。 - Jayyrus
显示剩余2条评论

1

你运行了你的应用程序吗?请参考这个教程

如果你的应用程序安装在SD卡上,那么在android.intent.action.BOOT_COMPLETED事件后它将不可用。在这种情况下,请注册android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE事件。


请注意,从Android 3.0开始,在您的应用程序能够接收到android.intent.action.BOOT_COMPLETED事件之前,用户需要至少启动一次该应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接