网站的排版包括什么意思天猫网站怎么做
news/
2025/9/24 9:07:01/
文章来源:
网站的排版包括什么意思,天猫网站怎么做,网站建设柒首先金手指1,江苏科技大学新校区建设网站Android IPC简介 IPC是Inter-Process Communication的缩写#xff0c;含义就是进程间通信或者跨进程通信#xff0c;是指两个进程之间进行数据交换的过程。那么什么是进程#xff0c;什么是线程#xff0c;进程和线程是两个截然不同的概念。在操作系统中#xff0c;线程是…Android IPC简介 IPC是Inter-Process Communication的缩写含义就是进程间通信或者跨进程通信是指两个进程之间进行数据交换的过程。那么什么是进程什么是线程进程和线程是两个截然不同的概念。在操作系统中线程是CPU调度的最小单元同时线程是一种有限的系统资源。而进程指的一个执行单元在PC和移动设备上指的是一个程序或者一个应用。一个进程可以包含多个线程因此进程和线程是包含被包含的关系最简单情况下一个进程可以只有一个线程即主线程在Android里面也叫UI线程在UI线程里才能操作界面元素。 那么在Android中有特色的进程间通信方式就是Binder了通过Binder可以轻松实现进程间通信。除了BinderAndroid还支持Socket通过Socket也可以实现任意两个终端之间的通信当然一个设备上的两个进程之间通过Socket通信自然也是可以的。 说到IPC的使用场景就必须提到多进程只有面对多进程这种场景下才需要考虑进程间通信。所有运行在不同进程中的四大组件只要它们之间需要通过内存来共享数据都会共享失败这也是多进程所带来的主要影响。正常情况下四大组件中间不可能不通过一些中间层来共享数据那么通过简单地指定进程名来开启多进程都会无法正确运行。一般来说使用多进程会造成如下几方面的问题 静态成员和单例模式完全失效线程同步机制完全失效SharedPreferences的可靠性下降Application会多次创建为了解决这个问题系统提供了很多跨进程通信方法虽然说不能直接地共享内存但是通过跨进程通信我们还是可以实现数据交互。实现跨进程通信的方式有很多比如通过Intent来传递数据共享文件SharedPreference基于Binder的Messenger和AIDL以及Socket等。 IPC基础概念介绍 Serializable接口 Serializable是Java提供的一个序列化接口它是一个空接口为对象标准的序列化和反序列化操作。使用Serializable来实现序列化相当简单一句话即可。 public class User implements Serializable {private static final long seriaVersionUID 519067123721295773L
} Parcelable接口 Parcel内部包装了可序列化的数据可以在Binder中自由传输在序列化过程中需要实现的功能有序列化、反序列化和内容描述序列化功能有writeToParcel方法来完成最终是通过Parcel中的一系列write方法来完成的。用法如下 public class MyParcelable implements Parcelable {// You can include parcel data typesprivate int mData;private String mName;// We can also include child Parcelable objects. Assume MySubParcel is such a Parcelable:private MySubParcelable mInfo;// This is where you write the values you want to save to the Parcel. // The Parcel class has methods defined to help you save all of your values. // Note that there are only methods defined for simple values, lists, and other Parcelable objects. // You may need to make several classes Parcelable to send the data you want.Overridepublic void writeToParcel(Parcel out, int flags) {out.writeInt(mData);out.writeString(mName);out.writeParcelable(mInfo, flags);}// Using the in variable, we can retrieve the values that // we originally wrote into the Parcel. This constructor is usually // private so that only the CREATOR field can access.private MyParcelable(Parcel in) {mData in.readInt();mName in.readString();mInfo in.readParcelable(MySubParcelable.class.getClassLoader());}public MyParcelable() {// Normal actions performed by class, since this is still a normal object!}// In the vast majority of cases you can simply return 0 for this. // There are cases where you need to use the constant CONTENTS_FILE_DESCRIPTOR// But this is out of scope of this tutorialOverridepublic int describeContents() {return 0;}// After implementing the Parcelable interface, we need to create the // Parcelable.CreatorMyParcelable CREATOR constant for our class; // Notice how it has our class specified as its type. public static final Parcelable.CreatorMyParcelable CREATOR new Parcelable.CreatorMyParcelable() {// This simply calls our new constructor (typically private) and // passes along the unmarshalled Parcel, and then returns the new object!Overridepublic MyParcelable createFromParcel(Parcel in) {return new MyParcelable(in);}// We just need to copy this and change the type to match our class.Overridepublic MyParcelable[] newArray(int size) {return new MyParcelable[size];}};
} Serializable和Parcelable区别 Serializable是Java中的序列化接口其使用起来简单但是开销很大在序列化和反序列化过程中需要大量的I/O操作。而Parcelable是Android中的序列化方式因此更适合用在Android平台上它的缺点就是使用起来稍微麻烦点但是它的效率很高。 Binder 直观来说Binder是Android中的一个类它实现了IBinder接口。从IPC角度来说Binder是Android中的一种跨进程通信方式Binder还可以理解为一种虚拟的物理设备它的设备驱动是/dev/binder该通信方式在Linux中没有。从Android Framework角度来说Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager等等)和相应ManagerService的桥梁。从Android应用层来说Binder是客户端和服务端进行通信的媒介当bindService的时候服务端会返回一个包含了服务端业务调用的Binder对象通过Binder对象客户端就可以获取服务端提供的服务或者数据这里的服务包括普通服务和基于AIDL的服务。 Android中的IPC方式 使用Bundler 我们知道四大组件中三大组件activity、service、receiver都是支持在Intent中传递Bundle数据的由于Bundle实现了Parcelable接口所以它可以方便地在不同的进程间传输。 使用文件共享 共享文件也是一种不错的进程间通信方式两个进程间通过读/写同一个文件来交换数据比如A进程把数据写入文件B进程通过读取这个文件来获取数据。 使用Messenger Messenger可以翻译为信使顾名思义通过它可以在不同进程中传递Message对象在Message中放入我们需要传递的数据就可以轻松地实现数据的进程间传递。Messenger是一种轻量级的IPC方案它的底层实现是AIDL实现Messenger有以下两个步骤分为服务端进程和客户端进程。 使用AIDL 远程服务跨进程通信的一种方式。 使用ContentProvider ContentProvider是Android中提供的专门用于不同应用间进行数据共享的方式它的底层实现同样也是Binder。 使用Socket Socket也称为“套接字”是网络通信中的概念它分为流式套接字和用户数据套接字两种分别应于网络的传输控制层中的TCP和UDP协议。 选用合适的IPC方式 阅读扩展 源于对掌握的Android开发基础点进行整理罗列下已经总结的文章从中可以看到技术积累的过程。 1Android系统简介 2ProGuard代码混淆 3讲讲HandlerLooperMessageQueue关系 4Android图片加载库理解 5谈谈Android运行时权限理解 6EventBus初理解 7Android 常见工具类 8对于Fragment的一些理解 9Android 四大组件之 Activity 10Android 四大组件之 Service 11Android 四大组件之“ BroadcastReceiver 12Android 四大组件之 ContentProvider 13讲讲 Android 事件拦截机制 14Android 动画的理解 15Android 生命周期和启动模式 16Android IPC 机制 17View 的事件体系 18View 的工作原理 19理解 Window 和 WindowManager 20Activity 启动过程分析 21Service 启动过程分析 22Android 性能优化 23Android 消息机制 24Android Bitmap相关 25Android 线程和线程池 26Android 中的 Drawable 和动画 27RecylerView 中的装饰者模式 28Android 触摸事件机制 29Android 事件机制应用 30Cordova 框架的一些理解 31有关 Android 插件化思考 32开发人员必备技能——单元测试 转载于:https://www.cnblogs.com/cr330326/p/6340958.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915442.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!