android-cn / android-discuss

Android 问题交流讨论坛, 微信公众号:codekk, 网站:
https://github.com/android-cn/android-discuss/issues
Apache License 2.0
4.08k stars 537 forks source link

[问答]Android多进程使用情况 #280

Open inexistence opened 9 years ago

inexistence commented 9 years ago

经常看到有关于Android多进程间通信的问题,由于接触进程方面较少,想了解下一般什么情况下使用多进程,有什么好处,大概怎样设计的?求指教。

wx962464 commented 8 years ago

http://android.jobbole.com/82092/ 这篇文章对多线程做了详细的解释及介绍,可以参考下。

LLin233 commented 8 years ago

避开UI线程以外你又需要多个线程并行做其他事情的时候用多线程呗…虽然有点废话但是事实如此, 比如说你开了一个grid layout然后每个里面都要下载图片…你就得开一堆task出去下载..哪个下好了哪个就显示

Aaron notifications@github.com于2015年12月1日周二 下午4:48写道: http://android.jobbole.com/ 82092/ 这篇文章对多线程做了详细的解释及介绍,可以参考下。

— Reply to this email directly or view it on GitHub .

inexistence commented 8 years ago

是进程不是线程……

70kg commented 8 years ago

@LLin233,做题前先审题😏

HomHomLin commented 8 years ago

我印象最深的是我大学的时候想做一个手机上的Kinect,于是花了时间做了一个摄像头体感识别的程序,是一个独立的app,同时我也封装了一个SDK,方便其他第三方程序嵌入,可以随时和我的程序进行链接,我也做了4个Unity游戏来体现我的这个程序的易用性和可用性,同时还做了一个游戏大厅DEMO来容纳我做的这些小东西,运行的条件是我的识别程序必须和游戏同时运行,这样游戏本身可以获得识别程序识别的数据来进行游戏处理。 这时候就用到了多进程之间的数据通信,主要是AIDL接口,识别程序随时传递识别数据,而SDK内含的Service则负责处理这里数据并且回调给游戏。 最后这个我脑洞大开搞出的东西被我的老师带我去参加了一个省比赛,当时参赛的大学组的东西都是基于Kinect开发的游戏和程序,他们也都随身扛着一个Kinect。 不得不吐槽的是评委认为我的东西已经存在了(也就是Kinect,我想吐槽Kinect有手机版嘛?),觉得我的东西是在模仿而给了我一个三等奖,特等奖是基于百度地图的LBS程序,一等奖是一个手机程序加锁工具,也就是可以给手机上的APP加锁要输入密码成功才能打开的程序,二等奖是一个基于Kinect的体感游戏。

kangdawei commented 8 years ago

大学都这么牛逼

inexistence commented 8 years ago

微信Android客户端架构演进之路 这篇文章中,变革这一小节提到了轻重进程分离的思想

对比v1.x版本的微信客户端架构图,我们将右下角Network的部分用轻重进程分离的思想,独立到一个单独的进程(:push)中,而上面两个层级依然跑在微信的主进程(:worker)中。而对于有内存泄露问题的webview或者其他不频繁使用的功能,再把其分离到独立的工具进程(:tools)中。通过分离进程,微信第一次重构解决了系统因为微信资源消耗,主动干掉微信服务的困境。分离后的push进程内存占用以及被系统kill回收的几率大幅降低,而对于worker和tools进程,我们不再要求其一定存在,只在用户收到消息,或者进入h5相关功能界面时存在即可。这个版本的架构变更基本达成了我们设定的目标,无论是电量还是平均待机内存消耗上都大幅度下降,从内存上来看下降了70%,电量的话也比竞品和我们前一个版本有好转。

dxjia commented 8 years ago

@HomHomLin 体感识别用什么来做的呢?opencv?还是有比较可用的第三方库呢?

HomHomLin commented 8 years ago

@dxjia 利用openCV,自己实现的算法