我希望创建Android服务,一直工作到我停止它。重启设备,垃圾收集器等不会影响它的工作。请给我最好的例子。
答案 0 :(得分:2)
您需要拥有一个BroadcastReceiver
来监听BOOT_COMPLETED广播Intent
并在设备启动时启动您的Service
。
您的Service
应该从START_STICKY
返回onStartCommand()
。如果Android出于任何原因决定将其杀死,则会重新启动Service
。
如果想要,您无法阻止Android杀死Service
。您所能做的就是尽量确保Service
在被杀后重新启动。
此外,如果您的用户强制停止了您的应用,您的Service
将停止,并且不会再次自动启动。在这种情况下,用户需要再次启动您的应用,才能重新启动Service
。
答案 1 :(得分:2)
答案 2 :(得分:1)
为此,您必须设置一个BroadcastReciver,它将接收启动完成。在该接收器中启动您想要的服务是确切的代码。
服务类
public class BroadCastService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(),R.raw.tone);
mediaPlayer.start();
return Service.START_STICKY;
}
}
BroadCastReciver类
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent startServiceIntent = new Intent(context, BroadCastService.class);
context.startService(startServiceIntent);
}
}
在Manifest中
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
// add following in <application>
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>