2012-01-03 92 views
14

据我所知,Android有权随时终止后台应用程序的进程以回收RAM。应用程序仍在运行,但仍然可以恢复,但是我的所有静态变量都已消失(请参见this文章)。Android模拟器:模拟由于内存不足导致进程重启的简单方法?

我想在这种情况下模拟我的应用程序的行为。最简单的方法是什么?与编写一些额外分配大量内存的应用程序相比,肯定有一种更容易且更可预测的方式。

+0

这是否杀死自己的进程'android.os.Process不同。 killProcess(android.os.Process.myPid())'? – tidbeck 2012-01-03 13:03:34

+0

@tidbeck:你的猜测和我一样好。我指的是这篇文章:http://android-developers.blogspot.com/2010/04/multitasking-android-way.html – 2012-01-03 18:52:44

+0

可能的重复[Android:如何强制重新启动服务(操作系统在低内存行为中被查杀) ](http://stackoverflow.com/questions/7257378/android-how-to-force-restart-service-os-killing-on-low-memory-behavior) – Flow 2013-09-05 10:22:46

回答

3

答案很简单:改变方向,如果你使用的是仿真器。如果使用实际设备,请转到设置 - >开发人员选项 - >不保留活动来更改设置。

有关详细说明,请参阅我对thisthis的回答。

+0

谢谢!我将在下次更新我的Android应用时检查这一点。 – 2013-02-26 20:26:28

+0

这会测试配置更改 - 而不是进程重启。这是两件不同的事情。 – ZakTaccardi 2016-11-29 23:03:17

+0

不要让活动不会破坏全局应用程序上下文,我们希望能够销毁全局应用程序上下文,以便在重新运行时它将尝试从应用程序onCreate()开始并启动上次打开的活动 – 2017-05-23 11:08:36

2

另一种方法是构建一个超级基本应用程序,该应用程序为您的程序包调用killBackgroundProcesses(),因为此方法“与内核杀死那些进程以回收内存相同;系统将负责在将来重新启动这些进程如所须。”

1

要杀死后台进程(但可通过历史还是重新启动),你可以在模拟器或设备使用活动管理器shell命令:

$ adb shell am kill com.my.package