即使用户强行关闭它,如何启动服务?

时间:2017-02-16 12:42:49

标签: java android android-sdk-2.3

我想开始我的服务,即使用户强制停止应用程序或其他应用程序强制停止我的应用程序。 这是我的代码。

 @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);
}

2 个答案:

答案 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(); 
    }