1

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

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

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

你能建议/指导我吗?

雪儿!

4

2 回答 2

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);
}
于 2012-12-27T13:56:11.943 回答
0

虽然我不建议在不推送任何数据的情况下打开套接字连接。您可以尝试使用异步任务保持套接字连接打开。每当套接字连接关闭时。你可以产生一个异步任务。

于 2012-12-27T13:57:03.990 回答