【问题标题】:Android: make the system to kill the app's process instead of destroying paused/stopped activitiesAndroid:让系统杀死应用程序的进程而不是破坏暂停/停止的活动
【发布时间】:2014-03-10 10:36:18
【问题描述】:

是否可以强制 Android 杀死整个应用程序的进程而不是破坏在后台运行的活动?因为,我不希望系统重新创建被破坏的活动,因为在这种情况下应用程序将无法正常工作。因此,我认为终止整个过程更加“用户友好”,因此用户只需再次启动应用程序,一切都会按原样运行。该解决方案不应影响正常的“恢复”(当活动仍在后台运行时)..

【问题讨论】:

  • 使用android.os.Process.killProcess(android.os.Process.myPid());

标签: android memory-management activity-lifecycle android-memory


【解决方案1】:

是否可以强制Android杀死整个app的进程 而不是销毁在后台运行的活动?

是的,使用android.os.Process.killProcess(android.os.Process.myPid()); 欲了解更多信息refer Process

myPid () - 返回进程的标识符,可以和killProcess(int)一起使用

【讨论】:

  • 好的,谢谢。我在 onCreate() 中使用以下代码: if(savedInstanceState!=null) { android.os.Process.killProcess(android.os.Process.myPid()); }
【解决方案2】:

当然。不要忘记另一个功能。

ActivityManager activityManager = (ActivityManager)  getActivity().getSystemService(Context.ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses(processName);

【讨论】:

  • " 让系统立即杀死与给定包关联的所有后台进程。这与内核杀死这些进程以回收内存相同;系统将在未来重新启动这些进程需要。” 这将导致相同的行为,不是吗?
【解决方案3】:

当活动被破坏时不要终止进程......因为当用户锁定屏幕时会调用某些设备(在许多设备上)上的 OnDestroy。 (或屏幕旋转...)

作为 android 设备上的呼叫流程示例:

创建时 …… 用户按下锁定屏幕 ... 销毁 OnCreate - 我不知道为什么在锁定期间调用这个 onCreate ... 用户解锁屏幕.. .. onResume。

通常应用程序应处理此类情况并保存其状态,如下所示:Saving Android Activity state using Save Instance State

【讨论】:

  • 一个原因可能是您在横向模式下使用您的应用程序。因此,它被破坏了,因为系统切换回其正常模式(纵向模式)。好吧,你的权利。但是无法保存活动状态有几个原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多