我在某处读取广播接收器在与应用程序不同的进程中运行,因此它有自己的堆。现在,如果在广播接收机中,我从我的应用程序开始一个活动,这是否会在应用程序的进程中运行,还是仍在广播接收器的进程中?从广播接收器启动的活动是否与应用程序使用相同的堆?
这个问题的答案对于本机堆(蜂窝前API)是否也适用?
想知道,因为当我收到推送通知时,我必须启动一个内存昂贵的活动/屏幕,并且如果我正处于某些其他内存昂贵活动的中间,应用程序中可能会导致内存不足错误。但是,如果它是一个单独的堆(更具体地说 - 本地堆,因为内存消耗来自位图并且我正在为API预蜂窝开发),所以我不必担心它。
注“读的地方”是指:Why so much memory? 尼古拉Chorniy的帖子
“有我用来避免的OutOfMemoryError一个棘手的解决办法我注册了一个接收器,使其运行在不同的过程...... “
我编辑了我的文章,阅读http://stackoverflow.com/questions/4726129/why-so-much-memory - Nikolay Chorniy的帖子。那是错的吗?或者我理解错了什么? – Ixx 2012-07-24 22:05:47
@lxx:在您引用的文章中,开发人员*特别*将他的'BroadcastReceiver'放在一个单独的过程中。它不会自动发生。此外,用户可能不会意识到您正在使用的额外内存及其对设备的影响。 Google员工多次表示,使用第二个流程对业务不利。 AFAIK,默认情况下,您的活动将回到您的常规流程中,除非您还安排它通过清单运行在第二个流程中,您对接收方的做法。 – CommonsWare 2012-07-24 22:12:02
好吧,我明白了。感谢您的回答! – Ixx 2012-07-24 22:19:36