好吧,我会一次尝试解释一个问题,这样你就可以理解我遇到的问题,希望有人能告诉我锄头修理它。所以我的应用程序运行完美,但我的用户一直在抱怨使用高RAM,平均而言,它运行在任何从120mb到200mb IDLE的地方,我同意这是对的,所以我继续想起我在之前的项目中使用过的技巧这就是这行代码android:hardwareAccelerated =" false"。这样每次活动移除大约10mb的ram,但我仍然使用大约90mb的使用率,所以我去看了一下,发现这个android:process =":ProcessName">这使我的应用程序从使用100mb到仅仅8mb的内存。但是我在这样做时遇到了一个问题,那就是我在一个服务活动中有一个LocalBroadcastManager,它将数据发送到我的MainActivity,当这两个有不同的进程时,他们不会相互通信,如果我将它们组合到同一个进程中,那么使用率就会再次上升。所以我有点不知道该做什么,我拒绝使用Android内存调试器,因为它并没有告诉我关于我的代码出错的问题。从字面上看,我的MainActivity内部有5个文本视图和一个imageview,所以我知道它不是那么密集!如果有人需要代码,请告诉我,但我认为有人真的不需要查看代码来回答这个问题!
答案 0 :(得分:0)
您写道:
但是这样做时我遇到了一个问题,那就是我在一个服务活动中有一个LocalBroadcastManager,它将数据发送到我的MainActivity,当这两个进程有不同的进程时,它们就不会相互通信,如果我将它们组合到同一个进程中,则再次使用它们。
您可以将服务保存在一个单独的流程中,并通过IPC,进程间通信从应用程序的第一个流程绑定到它。
请参阅:
http://developer.android.com/guide/components/bound-services.html
有多种方法可以进行IPC。 Messenger
选项对您来说可能是一个很好的起点:
http://developer.android.com/guide/components/bound-services.html#Messenger
来自文档:
如果您需要服务与远程进程通信,则可以使用Messenger为您的服务提供界面。此技术允许您执行进程间通信(IPC),而无需使用AIDL。