android - 关闭应用程序后保持服务运行
问题描述
我正在尝试创建一个与我的本地主机通信并在数据库中搜索的应用程序。
我已经建立连接并找到数据,但如果表中有任何更改,我需要保持连接并发送通知,但即使我关闭应用程序,我也无法弄清楚如何保持连接,因为它关闭一切,甚至服务。
该服务不保持开放。
这是我的课:
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));
}
}
每次我关闭应用程序时,服务都会再执行一次,不再执行。
解决方案
如果需要,您可以使用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;
}
推荐阅读
- javascript - 如何等待函数内部的猫鼬承诺?
- heroku - 为什么 Heroku 会引发这个不寻常的错误?
- javascript - 在 javascript 中收听网页上的传出请求
- javascript - 无法在保管箱中获取访问令牌使用 javascript 获取请求
- asp.net-core-3.1 - 大型 http 有效负载不会发送到 .NET Core 3.1 中的 Serilog Http Sink 端点
- c++ - 无状态 lambda 作为静态局部变量
- r - 通过将第一行减去多列中的每个值来规范化数据
- excel - 宏在发现重复数据之前可以正常工作。我希望它复制副本
- python - 如何使用 mechanize python 上传文件?
- c++ - 使用三角形条将三角形移动到新列