我想开始我的服务,即使用户强制停止应用程序或其他应用程序强制停止我的应用程序。 这是我的代码。
@Override
public void onDestroy() {
super.onDestroy();
stopLocationUpdates();
AlarmManager alarmMgr = (AlarmManager)this.getSystemService(this.ALARM_SERVICE);
Intent i = new Intent(this, LocationUpdateService.class);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, i, 0);
alarmMgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10, pendingIntent);
}
答案 0 :(得分:-1)
首先,强行运行服务真的是非常糟糕的模式 用户的意愿。 无论如何,你可以通过使用处理。的BroadcastReceiver重新启动它 从您服务的onDestroy()发送的广播。
StickyService.java
public class StickyService extends Service
{
private static final String TAG = "StickyService";
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(TAG, "onStartCommand");
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
sendBroadcast(new Intent("YouWillNeverKillMe"));
}
}
RestartServiceReceiver.java
public class RestartServiceReceiver extends BroadcastReceiver
{
private static final String TAG = "RestartServiceReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "onReceive");
context.startService(new Intent(context.getApplicationContext(),
StickyService.class));
}
}
声明清单文件中的组件
<service android:name=".StickyService" >
</service>
<receiver android:name=".RestartServiceReceiver" >
<intent-filter>
<action android:name="YouWillNeverKillMe" >
</action>
</intent-filter>
</receiver>
在组件中启动StickyService(即应用程序,活动,片段):
startService(new Intent(this, StickyService.class));
答案 1 :(得分:-1)
我在onDestroy()
开始服务。如果任何人有更有效的方法来执行此操作,此代码将对我有用,请对其进行评论。
@Override
public void onDestroy() {
super.onDestroy();
startLocationUpdateService();
}