Android 多进程资料总结
温故而知新
网上说多进程的文章很多,不过基本都是在讨论很深的东西,这是需要去专研的,而我是来这篇是用来偷懒的(应用层次),记录的都是自己对多进程的理解,方便以后用到的时候来偷懒,如果有错,请指教,小小程序员万分感谢。
讲进程,先来回答下面几个问题:
1.什么是线程?
线程就是程序中单独执行的流控制。
2.什么是多线程?
多线程就是单个程序中执行多个流控制。作用就是最大限度的使用CPU资源。
3.什么是进程?
一般指的是一个执行单元,即一个应用程序(Android中就是一个应用)。
4.线程和进程的关系?
一个进程可以有多个线程,进程与线程是包含与被包含的关系。
5.为什么要用多进程?
1.单进程所分配的内存不够,需要更多的内存。
2.需要运行一个独立的组件。
3.干一些不可见人的勾当,比如(
A-> 心跳 ->B,如果B没启动,就启动B。
B-> 心跳 ->A,如果A没启动,就启动A。
简单说就是双守护进程来防止被用户杀掉。)
6.怎么开启多进程?
AndroidManifest.xml中设置android:process=":remote"
<service
android:name=".remoteService"
android:label="@string/app_name"
android:process=":remote"/>
Activity中启动这个服务
Intent mIntent = new Intent(this, remoteService.class);
startService(mIntent);
7.":remote"中,冒号是个什么鬼?
它不是鬼,android:process表示这个组件跑在什么鬼进程里,就是进程名。用:的意思是表示这是这个进程对于启动它的应用来说是私有的。类似于我们注册Activity省略包名一样。如果我们的包名是com.example.whitelaning,那这个 android:process=":remote"的进程的名字就是"com.example.whitelaning:remote"。
8.私有进程和全局进程有什么区别?
我也想知道%>_<%有人知道请指教
夜雨寄北大大回复是,e带:的表示是当前应用的私有进程,其他应用的组件不可以跟它跑在同一个进程里面,而对于全局进程,其他应用可以通过shareUID来跟它处于同一个进程里面具有相同Uid的应用可以共享数据,可以互相访问对方的私有数据(主席的书在多进程那一节里面有讲解)
9.多进程有什么要注意的?
1.每次开启多进程,Application都会重新执行一遍,所以如果你在Application做了很多初始化的工作,那就需要判断是哪个进程启动的Application了。
方法:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
int pid = android.os.Process.myPid();
String processNameString = "";
ActivityManager mActivityManager = (ActivityManager)this.getSystemService(getApplicationContext().ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
processNameString = appProcess.processName;
}
}
if("com.example.whitelaning".equals(processNameString)){
//do Something
} else {
//do Something
}
}
}
2.多进程会使单例模式失效,因为两个线程的内存是隔离的。
10.还有什么要知道的?
去看源码吧,你会死去活来的,如果看完还没死,请告诉我私有进程和全局进程的区别吧,我会献上我一年份的膝盖的~
通过此文希望能对Android多线程的资料掌握,谢谢大家对本站的支持!
您可能感兴趣的文章:Android应用开发SharedPreferences存储数据的使用方法Android 动画之TranslateAnimation应用详解Android 动画之ScaleAnimation应用详解Android开发中多进程共享数据简析Android 进程间通信实现原理分析Android应用程序四大组件之使用AIDL如何实现跨进程调用ServiceAndroid编程防止进程被第三方软件杀死的方法解析后台进程对Android性能影响的详解Android结束进程的方法详解Android中应用多进程的整理总结
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341