我读过一些文章,指出使用此方法“不好”,不应使用,这不是“关闭”应用程序的正确方法,也不是Android的工作方式...
我理解并接受这样一个事实,即在适当的时候终止该过程,Android操作系统比我更了解我,但是我还没有听到很好的解释,说明为什么使用killProcess()
方法是错误的。毕竟-它是Android API的一部分。
我所知道的是,在其他线程正在执行潜在的重要工作(文件操作,写入数据库,HTTP请求,运行服务等)时调用此方法会导致线程终止,这显然不好。另外,我知道我可以从以下事实中受益:“重新打开”应用程序将更快,因为从上次使用该应用程序以来,系统仍将“保持”状态保持在内存状态,而killProcess()
可以防止这种情况的发生。
除此之外,假设我没有这样的操作,并且我不在乎我的应用程序是否每次打开应用程序都会从头开始,还有其他原因为什么我不应该使用killProcess()
方法?
我知道用于关闭finish()
的Activity
方法,因此请不要在答案中包括该内容。finish()
仅适用于Activity
,不适用于所有应用程序,我想我确切地知道为什么以及何时使用它。
还有另一件事-我正在使用Unity3D框架开发游戏,并将该项目导出到Android。当我反编译生成的apk时,我很惊讶地发现,使用Application.quit()
从unity创建的Java源代码-实现Unity的-Process.killProcess(Process.myPid())
方法。
根据Unity3D文档,Application.quit()
应该是关闭游戏的正确方法(真的吗?也许我错了并且错过了一些东西),那么为什么Unity的框架开发人员会在原生Android中实现此功能?
最佳答案
谁说调用Process.killProcess(Process.myPid())是个坏主意?
是的,让操作系统管理自己的内存是您和使用应用程序的用户的最佳做法(更快地再次打开,强制关闭的机会更少,等等)。
但是,假设您确定自己不会中断线程或其他后台操作,并且在onDestroy()
中使用此调用-我认为没有理由不应该使用它。特别是当它是一个API调用而不是一种解决方法时,Google并没有提到最好不要在API文档中使用它。