gpt4 book ai didi

android - 服务未在 BOOT COMPLETE 上启动

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:06 25 4
gpt4 key购买 nike

我有一个服务,我想在启动完成时启动

当它启动时,我会显示一条 toast 消息。

我的问题是,当设备启动时,toast 显示并卡在屏幕上,服务未正确启动。

但是,如果我尝试通过一个 Activity 启动我的服务,该服务启动良好,几秒钟后 toast 正确消失。

我的 list :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tfl.extprotocolservice"
android:versionCode="7"
android:versionName="1.6" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

<application
android:allowBackup="true"
android:icon="@drawable/launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<receiver android:name="com.tfl.extprotocolservice.ExtProtocolBroadcastReceiver"
android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>

<service android:name=".ExtProtocolService" >
<intent-filter>
<action android:name="com.tfl.extprotocolservice.ISetIpPort" />
</intent-filter>
<intent-filter>
<action android:name="com.tfl.extprotocolservice.IExtMessage" />
</intent-filter>
</service>
<!--
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
-->
</application>

</manifest>

我的广播接收器:

public class ExtProtocolBroadcastReceiver extends BroadcastReceiver {


/* broadcast receiver to start on BOOT COMPLETE*/
@Override
public void onReceive(Context context, Intent intent) {
Intent StartServiceIntent=new Intent(context,ExtProtocolService.class);
context.startService(StartServiceIntent);

}

}

顺便说一句, list 中的 Activity 已被注释,因为我真的不需要它,它只是为了测试从 Activity 中启动服务。

最佳答案

如果您的应用程序没有 Activity ,您的 BroadcastReceiver 将永远不会被调用。

当您安装应用程序时,它会以“停止状态”安装。处于“停止状态”的应用程序不会收到传送给它们的广播 Intent

为了使您的应用程序脱离“停止状态”,用户必须手动启动您的应用程序(至少一次)。为此,您必须向他提供一个 Activity,他可以用它来启动您的应用程序。

一旦您的应用程序不再处于“停止状态”,Android 将向其传送广播 Intent。也就是说,直到用户“强制停止”您的应用程序。

如果用户“强制停止”您的应用程序,它将返回到“停止状态”并且将不再获得广播 Intent。直到用户再次手动启动你的应用。

关于android - 服务未在 BOOT COMPLETE 上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com