Android:启动服务时出现问题

Android:启动服务时出现问题,android,service,boot,Android,Service,Boot,在my AndroidManifest.xml文件中: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_ST

在my AndroidManifest.xml文件中:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<service
    android:name="com.compagny.myapp.service.HTTPService"
    android:enabled="true" > 
    <!-- To allow start the Android service (for debugging session) -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>    
</service>

此应用程序在我的pcDuinoV2板上运行。但我有一种奇怪的行为:

  • 当我启动pcDuino板时,没有连接到我的开发笔记本电脑(因此使用外部电源),我的Android服务启动了,但没有任何功能(我的应用程序中有两台服务器)
  • 当我用我的笔记本电脑的USB连接启动pcDuino板时,我的Android服务启动了,我的两台服务器运行正常
在设置面板中,在安卓操作系统(来自pcDuino)中,当我检查正在运行的应用程序时,我的服务大小不同,这取决于我是否使用USB或外部电源启动pcDuino(正确行为为4.5MB;错误行为为2.2)

你们明白吗,伙计们


多谢各位

你有用户界面还是只有后台服务?它只是后台服务。没有用户界面。如果你在安卓3.1+上工作,你需要提供用户界面,或者用flag-flag\u-INCLUDE\u-STOPPED\u包启动你的服务,否则它不会工作。这是谷歌的安全补丁。当你默认安装一个软件包时,它的状态是停止的,直到用户与它交互。我添加了这个标志,但没有改进。。。公共类bootcompletedintentreeceiver扩展了BroadcastReceiver{@Override public void onReceive(上下文上下文,意图Intent){if(“android.Intent.action.BOOT_COMPLETED”.equals(Intent.getAction()){Intent pushIntent=new Intent(上下文,HTTPService.class);pushIntent.addFlags(Intent.FLAG_包括已停止的包);context.startService(pushIntent);}}}}应用程序的包状态已停止。在您更改状态之前,BootCompletedIntentReceiver将不会收到任何意图。要更改状态,您需要至少打开一次UI/使用ADB Shell的--include stopped packages标志启动服务/使用系统证书对APK进行签名并将其放入/system/app文件夹