android - 从广播接收器启动的 Activity 是否使用与应用程序相同的堆?

标签 android memory process broadcastreceiver

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

这个问题的答案对于 native 堆(pre-honeycomb API)也成立吗?

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

注意“在某处阅读”是指:Why so much memory? Nikolay Chorniy 的帖子

"There is a tricky workaround which I used to avoid OutOfMemoryError. I registered a receiver so that it ran on different process..."

最佳答案

I read somewhere that broadcast receiver runs in a separate process than the app

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

Wondering because I have to start a memory expensive activity / screen when I receive a push notification

用户可能不一定会喜欢您在不知名的地方显示“内存昂贵的 Activity/屏幕”。

关于android - 从广播接收器启动的 Activity 是否使用与应用程序相同的堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639857/

相关文章:

android - 对字段插槽的错误请求,SQLite - Android

memory - 字的大小和寻址

c# - 可变结构与类?

php - 向后台进程发送命令?

android - 如何在 Keyguard android studio 上打开一个 Activity ?

android - 为什么构建过程会忽略proguardFiles getDefaultProguardFile ('proguard-android.txt')

android - 通过 ACTION_MAIN 启动 Activity 时出现 ActivityNotFoundException

memory - PCI BAR 内存地址

java - 通过进程Id获取进程对象

c# - 使用 Linq 将进程名称与 XML 列表进行比较