Android 应用内多进程实现

android平台支持多进程通信,也支持应用内实现多进程
那么多进程应该能为我们带来什么呢
我们都知道,android平台对应用都有内存限制,其实这个理解有点问题,应该是说android平台对每个进程有内存限制,比如某机型对对进程限制是24m,如果应用有两个进程,则该应该的总内存限制是2*24m。使用多进程就可以使得我们一个apk所使用的内存限制加大几倍。
所以可以借此图片平台对应用的内存限制,比如一些要对图片、视频、大文件进程处理的好内存的应用可以考虑用多进程来解决应用操作不流畅问题。

实现多进程可以通过设置service、broadcast、activity的标签android:process来实现。
一般情况下启动这些组件默认是在同一个进程里运行的,如果设置了android:process标签,则会运行在其他进程里。
如果android:process的value不是":"开头,则系统里有同样名字的进程的话,会放到已存在的同名进程里运行,这样能减小消耗。
如果android:process的value是以":"开头,则启动一个名字为value的进程。

实现应用多进程之后,就是进程间通信啦 
进程间通信有两种实现方式:
1,用系统框架实现
2,自己实现AIDL

系统框架实现进程通信有用过Service,Broadcast,Activity,ContentProvider

转自:http://www.eoeandroid.com/thread-320076-1-1.html

Android中,默认一个APK包就对应一个进程,其进程名就为AndroidManifest.xml文件中 指定的package名。我们可以通过Activity, Service, BroadCastReceiver, ContentProvider的android:process属性来实现单APK多进程,但是需要注意进程间内存的不可见性。

举例见:http://blog.csdn.net/hudashi/article/details/7858125

时间: 2024-11-05 23:29:27

Android 应用内多进程实现的相关文章

【转】 Android应用内多进程分析和研究

正常情况下,一个apk启动后只会运行在一个进程中,其进程名为AndroidManifest.xml文件中指定的应用包名,所有的基本组件都会在这个进程中运行.但是如果需要将某些组件(如Service.Activity等)运行在单独的进程中,就需要用到Android:process属性了.我们可以为android的基础组件指定process属性来指定它们运行在指定进程中. 有什么好处 一般来说,Android应用多进程有三个好处. 1)我们知道Android系统对每个应用进程的内存占用是有限制的,而

android 应用内多进程

做 android 1 年多今天发现 一个应用内也可以有多个进程的, 在这里记录一下 android 默认只有一个主进程, 4 大组件都在同一个主进程中运行 但 service.broadcast.activity  provider 都可以通过指定  android:process 来启动一个新进程运行 项目中引用了一个第三方库,在退出应用的时候调用了 android.os.Process.killProcess(android.os.Process.myPid())  kill 掉了当前进程

Android 应用内多语言切换

p.p1 { margin: 0.0px 0.0px 12.0px 0.0px; line-height: 18.0px; font: 12.0px ".PingFang SC"; color: #000000 } p.p3 { margin: 0.0px 0.0px 13.9px 0.0px; line-height: 18.0px; font: 16.8px "PT Sans"; color: #000000 } p.p4 { margin: 0.0px 0.0

【Android】内嵌数据库IDE(可视化操作类)

Android开发的朋友应该对数据库内容的管理深有体会,想看一下放入数据库的内容都不是很方便,要么用root的设备导出来看或用第三方的手机版的ide.但是都要求root之后.最近一直在想android方便快捷的方法,今天刚好弄到了数据库这块.就写了一个Activity专门用来看数据库的,功能就是看对应数据库的表及表中的数据库. 效果图 刚写还没来得及美化,后面在使用过程中再时行完善. DBIDEActivity.java import java.util.ArrayList; import ja

Android应用内语言切换实现

自定义控件系列结束了,打个回马枪,补上前段时间埋下的一个坑---"应用内语言切换".APP语言改变是一个Configuration,但是这个Configuration和android手机屏幕旋转有点不大一样.屏幕旋转的时候,会destroy当前页面,并进行重新绘制.而切换语言后不会重新绘制页面,所以这种情况的出现造成了网上的一知半解小伙伴们哀声一片,不是在咒骂api的坑爹,就是在卖力的另辟蹊径想尽办法解决问题.思路都是很好的,目的也是坚决的,可是方向是错误的,把哥哥我也给带进了坑了,爬

unity3d 在android手机内读取assets目录内的资源

Unity3d版本(v4.6.3) android手机内读取包内文件只能使用www的方式, 文件协议为 "jar:file://" + Application.dataPath + "!/assets/" 1.必须有jar:开头 2.assets前有个!不能丢 3.目录路径分隔符不能有 \ 4.由于读取只能使用www的方式,故同时导致无法对assets内的文件进行遍历,若涉及到需要把资源拷贝到本地目录,则只能写一个记录文件,通常为一个文件名一行,如: aaa/bbb

Android应用内社区SDK技术架构浅析

Android应用内社区SDK技术架构浅析 应用内微社区是什么 ? 图1 图2 雪球财经应用内社区 一.以友盟微社区为例 简单来说,友盟的微社区就是一款帮助开发者在应用中快速搭建一个社区( 类似于新浪微博.朋友圈 )的产品.在很多应用中,开发商往往都会需要一个用户之间以及用户与开发商之间互动的社区,用户往往又会在社区里选择赞.评论.关注.转发.发帖等各种互动方式.但是开发一个社交系统可不是那么容易的一件事,复杂的用户关系.消息流.服务器架构等等都是棘手的问题,更重要的是大家都是重复地劳动!每个开

Android中SharedPreference多进程数据共享出错

http://my.oschina.net/zhibuji/blog/195097 主要解决: 在android中,多个进程对同一个sharedpreference进行修改,总会有一个进程获取到的结果不是实时修改后的结果. SharedPreference作为android五大存储(网络,数据库,文件,SharedPreference,contentProvider)之中最方便使用的一个,从类名上来看就不是一个存储大数据的工具,以key/value成对的形式来存储基本数据类型,只能存储基本数据类

android 怎样内置/预置/预编译文件(运行程序,应用程序,apk, jar, lib 等随意文件)到系统中

方法一: 如果要内置的软件名称为iperf.exe 1. 将iperf.exe放到Codebase的随意一个文件夹下(该文件夹必须可以在搜索Android.mk时被搜索到),比方system/iperf/iperf.exe 2. 在system/iperf文件夹下加入一个Android.mk文件,内容例如以下: LOCAL_PATH:= $(call my-dir) PRODUCT_COPY_FILES += $(LOCAL_PATH)/iperf.exe:system/iperf/iperf.