防止Termux进程被杀掉的方法解析

7次阅读
没有评论

如何防止ActivityManager杀掉后台运行的Termux进程

近期我在使用Termux进行开发工作时遇到了一个问题:在长时间脱离唤醒锁之后,系统会杀掉某些应用程序进程(例如运行中的服务器),尽管我已经采取了一些措施试图解决该问题。这里是一份详细的解决方案思路及步骤:

环境信息

  • 设备:三星Galaxy A5
  • 内存版本(内存内核):Android 8 / Samsung Experience 9

真实情况

设备上的ActivityManager杀掉了背景运行的Termux进程或服务,具体日志如下:

09-23 13:25:21.592  4450  5008 I ActivityManager: KPU : put [com.termux] : 15433 K
09-23 13:25:21.592  4450  5008 I ActivityManager: Killing 25360:com.termux/u0a171 (adj 904): DHA:empty #17

尝试过的解决办法

  • 关闭了电池优化功能。
    尝试过程中虽然关闭了“设备维护 – 密封设备”设置中的“电池选项卡下方的电源管理”,但似乎并没有影响ActivityManager。

解决方案与步骤

以下方法适用于非root手机:

  1. 进入设备的设置菜单,进入到应用列表页面;
  2. 选择Termux应用,在弹出的应用设置中找到并点击“电池”一项;
  3. 此时屏幕底部会出现一个小弹窗,里面会有一个开关,将其打开。这将开启对后台进程的支持;

  4. 打开并运行你的Termux终端程序。

  5. 在Termux界面上寻找通知栏或消息提示中的唤醒锁控件。一般情况下您会看到一个名为“Acquire wakelock”的选项;
  6. 按照指导进行操作:点击确认启用唤醒锁,然后在弹出的对话框中,选择“允许”;

此步骤将确保Termux程序及其运行的服务保持唤醒状态,不会被系统关闭或清除。

通过调整上述设置,可以改善 Termux 在非root设备上的响应性及服务运行稳定性问题。但需注意这是针对普通 Android 用户的安全限制处理方法,具体结果可能会因不同的Android版本有所变化。

小结

这个解决方案仅适用于非root的手机环境。对于根权限设备,则可以通过修改应用程序Manifest或通过其他方式直接控制唤醒锁获取,以更彻底地解决这个问题。

正文完