Tag: 杀死

服务崩溃并重新启动

有几个问题,但我总是读同样的事情:“如果系统需要资源,服务将被杀死”或“你不能建立一个永远运行的服务,因为它在后台运行的越多,更容易受到影响到系统杀死它“等等 我面临的问题是:我的服务运行正常并且正如预期的那样,如果我运行我的应用程序然后退出它我的服务仍在运行,但是当我杀死我的应用程序时(通过转到“最近的应用程序”并转换它离开)服务停止。 在这一刻,如果我进入设置>> aplications >>运行,我会看到该服务正在重启。 过了一会儿,它回来了,我的服务运行没有问题。 我谷歌它,我找到了一些我能做的事情,但让我先看看我的代码: 我通过这种方式启动我的服务(点击一下按钮后): Intent intent = new Intent (MainActivity.this, MyService.class); startService(intent); 我还有3个额外的整数,所以我有这样的东西: final Integer i, i2, i3; i = 5; //for example i2 = 10; //for example i3 = 15; //for example final Intent intent = new Intent (MainActivity.this, MyService.class); intent.putExtra(“INTEGER1”, i); intent.putExtra(“INTEGER2”, i2); intent.putExtra(“INTEGER3”, i3); startService(intent); 在MyService中,我有以下方面: public class […]

用于强制终止子进程的Java工具/方法

我正在寻找一个允许我强制杀死子进程的Java工具/包/库。 此工具/包/库必须在Windows平台上运行(必需)。 需要支持Linux / Unix。 我的问题 我的Java代码创建了一个子进程,它根本不会对杀死子进程的标准Java方式做出反应:process.destroy(),而且,由于我没有子进程的源代码,我无法对其进行编程以更好地处理终止请求。 我已经尝试在调用destroy()之前关闭子进程的错误输入和输出流,并且没有效果。 我甚至尝试将ctrlBreak信号(char = 3)直接传递给child.getOutputStream(),并再次收到相同的结果。 我终于找到的解决方法是: 在创建时获取子PID这可以通过在子项创建之前和之后getRuntime().exec(“tasklist /v”)进程列表在Windows中完成( getRuntime().exec(“tasklist /v”) ) 使用子PID发出强制终止系统命令 在Windows中: getRuntime().exec(“taskkill /pid ” + childPid + ” /f”) 但是 – 这是复杂的代码我不想调试和维护,加上问题本身,我毫不怀疑,以前遇到过许多其他java开发人员,这让我希望这样的Java工具/包/库已经存在。 我只是不知道它的名字…… PS:我的子进程是由Runtime.getRuntime().exec(cmd) ,但我使用ProcessBuilder得到了相同的行为。