v2rayNG
v2rayNG copied to clipboard
建议禁止Home键退出APP
预期行为
当在配置新的服务时,有时候需要切换到其它应用获得具体内容(例如在微信里复制必要参数)。这时需要返回微信。v2rayNG 后台隐藏。复制到内容后,返回v2rayNG,继续填入相应的配置参数。
实际行为
返回v2rayNG后,发现界面重新启动。原先已输入的参数全无。这样给配置交互产生极大麻烦。
复现方法
按Home返回切换到其它应用。然后再返回v2rayNG
建议
应该加入拦截Home键行为: src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
moveTaskToBack(false)
return true
}
if(keyCode == KeyEvent.KEYCODE_HOME){
var home = Intent(Intent.ACTION_MAIN)
home.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
home.addCategory(Intent.CATEGORY_HOME)
startActivity(home)
return true
}
return super.onKeyDown(keyCode, event)
}
表示从来没有这个问题。并且按照你的描述进行了同样的操作,并没有复现。
AndroidOS几乎都是自带返回、home和多任务快捷键/导航键的(参考我的截图),会不会因为你使用的是全屏手势导航?
MIUI 12.5.1稳定版:
https://user-images.githubusercontent.com/24989210/143983524-92ccab05-5a7c-4ee3-b278-c535d3c799e8.mp4
MIUI 12.5.1稳定版:
f37c085ded6b270af6ff0c651a5871cb.mp4
试试以下操作:
- 在MIUI里设置允许NG后台运行、忽略电量优化,在多任务列表中锁定NG。
- 看你的录屏好像没有实际的输入行为,你应该点开输入框弹出输入法后粘贴上去再home试试?
……
表示从来没有这个问题。并且按照你的描述进行了同样的操作,并没有复现。
AndroidOS几乎都是自带返回、home和多任务快捷键/导航键的(参考我的截图),会不会因为你使用的是全屏手势导航?
也许是他的描述不太准确,我一开始也没看懂他的意思,看到下面的代码示例才看懂。你试试按照我说的步骤看看能不能复现:
打开v2rayNG,点击右上角 +
号,选择手动输入[Vmess]
,无论填不填写参数都可以,HOME返回桌面,在桌面或抽屉中重新打开v2rayNG,这时你会发现v2rayNG的界面变成了主界面,刚才手动输入[Vmess]
的界面没有了。上文中的手动输入[Vmess]
也可以换成其它任何界面,包括v2rayNG的设置
或logcat
等。
我觉得这个就是v2rayNG对Activity的切换逻辑没做处理,通过桌面图标重新进入v2rayNG的时候不能回到之前的Activity,而是回到了MainActivity上。对v2rayNG来说想要返回之前的Activity必须从最近任务列表切换回去,一旦手贱点击了桌面图标就会导致之前的Activity被结束和回收。正常的APP应该无论点击桌面图标还是最近任务卡片都能切换到之前未结束的Activity上去,你可以试试Telegram或者Google Play等,只要程序没被系统杀掉,就不存在点击桌面图标直接回到MainActivity的情况。