2012-07-24 42 views
2

我在某处读取广播接收器在与应用程序不同的进程中运行,因此它有自己的堆。现在,如果在广播接收机中,我从我的应用程序开始一个活动,这是否会在应用程序的进程中运行,还是仍在广播接收器的进程中?从广播接收器启动的活动是否与应用程序使用相同的堆?

这个问题的答案对于本机堆(蜂窝前API)是否也适用?

想知道,因为当我收到推送通知时,我必须启动一个内存昂贵的活动/屏幕,并且如果我正处于某些其他内存昂贵活动的中间,应用程序中可能会导致内存不足错误。但是,如果它是一个单独的堆(更具体地说 - 本地堆,因为内存消耗来自位图并且我正在为API预蜂窝开发),所以我不必担心它。

注“读的地方”是指:Why so much memory? 尼古拉Chorniy的帖子

“有我用来避免的OutOfMemoryError一个棘手的解决办法我注册了一个接收器,使其运行在不同的过程...... “

回答

2

我读的地方,广播接收器运行在单独的进程比应用

默认情况下,所有组件都在相同的进程中运行。

奇怪,因为我有,当我收到一个推送通知

用户未必欣赏你在中间显示“内存昂贵的活动/屏幕”启动内存昂贵的活动/屏幕无处。

+0

我编辑了我的文章,阅读http://stackoverflow.com/questions/4726129/why-so-much-memory - Nikolay Chorniy的帖子。那是错的吗?或者我理解错了什么? – Ixx 2012-07-24 22:05:47

+0

@lxx:在您引用的文章中,开发人员*特别*将他的'BroadcastReceiver'放在一个单独的过程中。它不会自动发生。此外,用户可能不会意识到您正在使用的额外内存及其对设备的影响。 Google员工多次表示,使用第二个流程对业务不利。 AFAIK,默认情况下,您的活动将回到您的常规流程中,除非您还安排它通过清单运行在第二个流程中,您对接收方的做法。 – CommonsWare 2012-07-24 22:12:02

+0

好吧,我明白了。感谢您的回答! – Ixx 2012-07-24 22:19:36

相关问题