我正在为特定上下文设计一个自定义应用程序,该应用程序将始终在同一硬件中运行,并且我将完全控制在其上运行的软件。
我需要一个类似推送连接的永久套接字连接,以便向设备提供少量数据。用户可能会更改为不同的应用程序,因此我需要在打开套接字的情况下使用后台服务,并阻止Android将其杀死。我不能依赖第三方推送解决方案(甚至谷歌),因为这些设备不会有互联网连接。
我看到很多与此主题相关的帖子,但所有帖子都表明这不是一个好主意/可能。由于应用程序将在特定的上下文中运行,因此不会伤害任何人:)
你可以建议/指导我一下吗?Chers!
答案 0 :(得分:0)
它偶尔被杀是一个大问题吗?你不能只检查它是否正在运行,如果没有,你可以启动吗?要在您的活动中执行此操作:
if (!isMyServiceRunning()) {
startService();
}
...
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (MyService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
private void startService() {
Intent myService = new Intent(this, MyService.class);
startService(myService);
}
答案 1 :(得分:0)
虽然我不推荐在不推送任何数据的情况下打开套接字连接。您可以尝试使用Async任务保持套接字连接处于打开状态。 每当套接字连接关闭您可以生成异步任务。