我正在尝试在启动时启动前台服务,但它永远不会启动,但是如果我尝试启动正常的后台服务。它开始很好。
请告诉我我的代码有什么问题?
我的代码是: 清单文件:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name="com.test.andsrvfg.AndSrvFgService">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service android:name="AndSrvFgService">
<intent-filter>
<action android:name="com.test.andsrvfg.AndSrvFgService"></action>
</intent-filter>
</service>
</application>
BroadcastReceiver处理ACTION_BOOT_COMPLETED:
public class AndSrvFgStarter extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
Intent i = new Intent();
i.setAction("com.test.andsrvfg.AndSrvFgService");
context.startService(i);
}
}
}
实际服务如下:
public class AndSrvFgService extends Service {
private boolean bForeground = false;
public AndSrvFgService() {
}
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(!bForeground) {
bForeground = true;
Notification note = new Notification( 0, null, System.currentTimeMillis() );
note.flags |= Notification.FLAG_NO_CLEAR;
startForeground( 1242, note );
}
return START_STICKY;
}
@Override
public void onDestroy() {
if(bForeground) {
stopForeground(true);
}
}
答案 0 :(得分:4)
此代码适用于我:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dfsdf"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
<service android:name=".MyService"/>
<receiver android:enabled="true"
android:name=".BootUpReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
</application>
</manifest>
把它放在接收器中:
机器人:权限= “android.permission.RECEIVE_BOOT_COMPLETED”
将enable设置为true:
android:enabled =“true”