2017-04-09 171 views
0

我想创建一个即使在应用程序从任务管理器关闭时也会运行的service。我创建了一个服务,然后记录了一条消息以检查它是否正在运行,并且我注意到它只在应用程序正在运行或处于前景时才起作用。Android服务在应用程序死亡后停止

服务类:

public class CallService extends Service { 

    private final LocalBinder mBinder = new LocalBinder(); 
    protected Handler handler; 

    public class LocalBinder extends Binder { 
     public CallService getService() { 
      return CallService .this; 
     } 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return mBinder; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.d("TESTINGSERVICE", "Service is running"); 
    } 
} 

开始从我的MainActivity服务:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    startService(new Intent(this, CallService.class)); 

清单

<application> 
    ... 
    <service 
     android:name=".activities.services.CallService"> 
    </service> 
</application> 

我必须做什么改变?谢谢,伙计

回答

2

在您的服务中,添加以下代码。

@Override 
public void onTaskRemoved(Intent rootIntent){ 
    Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass()); 
    restartServiceIntent.setPackage(getPackageName()); 

    PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT); 
    AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
    alarmService.set(
    AlarmManager.ELAPSED_REALTIME, 
    SystemClock.elapsedRealtime() + 1000, 
    restartServicePendingIntent); 

    super.onTaskRemoved(rootIntent); 
} 
+0

感谢这工作:) – Dinuka

+0

OMG这个工程就像魔术。 1+为你 –

相关问题