这里发生的是我调用裁剪图像活动,然后相机活动在后台运行。当我完成此活动时,相机仍然在后台活着。那么如何以编程方式杀死在后台运行的相机活动?
Intent newIntent = new Intent();
newIntent.setAction("com.android.camera.action.CROP");
newIntent.setClassName("com.android.gallery", "com.android.camera.CropImage");
newIntent.setData(selectedImage);
startActivityForResult(newIntent, IMAGE_CROP
答案 0 :(得分:3)
您应该让Android自己处理流程生命周期。当它需要更多内存时,它会杀死未使用的进程。如果你自己杀了它,你也有可能在用户使用它时将其杀死,从而导致糟糕的用户体验。
答案 1 :(得分:1)
出于同样的原因,用户不应该每隔x分钟使用一个任务杀手来杀死他们的应用程序,你也不应该尝试杀死摄像头进程。
为什么呢?操作系统可以很好地处理内存管理。让它做它的事情,它知道它在做什么。此外,如果你杀了一个服务,很可能它会在被杀时重新启动,导致电源资源耗尽。您还可能会杀死写入磁盘并导致损坏的进程。
另外:正如CommonsWare所指出的,你正在使用不可靠的私有API(通过骇人地调用作物意图)。
答案 2 :(得分:0)
您可以通过ActivityManager.getRunningAppProcesses
获取手机上所有正在运行的进程的列表,然后搜索要杀死的进程,然后使用ActivityManager.killBackgroundProcesses
方法终止您想要的进程。
注意:您需要获得权限KILL_BACKGROUND_PROCESSES
注意:此方法仅支持android 2.2(froyo)。在旧版本的Android上,你可以获得一个Android源代码的副本并搜索正确的aidl,然后在一些魔法的帮助下你也可以杀死进程:)
最后的注意事项:你不应该杀死进程,除非你真的必须如已经提到的那样。