Android总是在后台服务中使用套接字连接

时间:2012-12-27 13:46:27

标签: android service background

我正在为特定上下文设计一个自定义应用程序,该应用程序将始终在同一硬件中运行,并且我将完全控制在其上运行的软件。

我需要一个类似推送连接的永久套接字连接,以便向设备提供少量数据。用户可能会更改为不同的应用程序,因此我需要在打开套接字的情况下使用后台服务,并阻止Android将其杀死。我不能依赖第三方推送解决方案(甚至谷歌),因为这些设备不会有互联网连接。

我看到很多与此主题相关的帖子,但所有帖子都表明这不是一个好主意/可能。由于应用程序将在特定的上下文中运行,因此不会伤害任何人:)

你可以建议/指导我一下吗?

Chers!

2 个答案:

答案 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任务保持套接字连接处于打开状态。 每当套接字连接关闭您可以生成异步任务。