关闭应用程序后保持服务运行

时间:2018-05-07 16:07:15

标签: android android-service

我试图创建一个与我的localhost通信并在数据库中搜索的应用程序 我已经建立了连接并找到了数据,但如果表中有任何更改,我需要保持连接状态并发送通知,但即使我在进行任何更改,我也无法弄清楚如何保持连接关闭应用程序,因为它会关闭所有内容,甚至是服务 该服务不会保持开放。

这是我的班级:

public class SensorService extends Service {

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


@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(this,"Starting",Toast.LENGTH_SHORT).show();
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    boolean bandera = true;
        Toast.makeText(this, "Checking data...", Toast.LENGTH_SHORT).show();
    return START_STICKY;
}

@Override
public void onTaskRemoved(Intent rootIntent) {
    super.onTaskRemoved(rootIntent);
    stopService(new Intent(this,SensorService.class));
    startService(new Intent(this,SensorService.class));
}

@Override
public void onDestroy() {
    startService(new Intent(this,SensorService.class));
}
}

每次关闭应用程序时,服务都会执行一次,而不再执行。

2 个答案:

答案 0 :(得分:0)

您可以使用onTaskRemoved并在需要时重新启动服务。

@Override
public void onTaskRemoved(Intent rootIntent){
       super.onTaskRemoved(rootIntent);
       //restart your service
}

请注意,如果您使用onTaskRemoved,请将您的服务设为非粘性,以便不会重新启动。

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
    return START_NOT_STICKY;
}

答案 1 :(得分:0)

如果您希望在关闭应用程序后服务继续运行,则需要从服务中调用startForeground(int,Notification)方法。只要向用户显示通知,让他们知道服务正在运行(如音乐播放器或下载服务),Android就会限制您在后台运行更长时间运行的服务。

这是一种有意的设计约束,可确保开发人员无需在用户不知情的情况下无限期运行的后台启动服务。提供您自己的通知(可以是任何内容),您应该能够在后台运行该服务。

有关此方法的更多详细信息,请阅读:startForeground(int, Notification)