经营网站需要什么费用电脑制作网站用哪个软件
15个问题的逐一解答:
1. 跨进程通信的几种方式
常见的跨进程通信(IPC)方式包括:
- Intent传递数据:通过
Intent在组件间传递数据(如Activity跳转),适用于简单数据传递(受限于Binder传输大小)。 - AIDL(Android Interface Definition Language):定义跨进程接口,支持复杂数据和方法调用,底层基于
Binder。 - Messenger:基于
Handler和Binder,简化了AIDL的使用,适合低频率通信,支持单向或双向消息传递。 - ContentProvider:用于数据共享(如通讯录),封装了数据操作,通过
Uri暴露接口,底层基于Binder。 - Socket:基于TCP/UDP的网络通信,适用于跨设备或进程间的长连接通信(如客户端-服务器模型)。
- 文件共享:通过读写同一文件实现通信,适用于非实时、低频率场景(需处理并发问题)。
2. wait和sleep的区别
- 所属类不同:
wait()是Object类的方法;sleep()是Thread类的静态方法。 - 锁机制不同:
wait()会释放当前对象的锁,需在synchronized同步块中调用;sleep()不会释放锁,可在任意位置调用。 - 唤醒方式不同:
wait()需通过notify()/notifyAll()唤醒,或等待超时自动唤醒;sleep()到指定时间后自动唤醒。 - 用途不同:
wait()用于线程间协作(如生产者-消费者模型);sleep()用于暂停线程执行一段时间。
3. String、StringBuffer、StringBuilder的区别
- 可变性:
String是不可变的(底层char数组被final修饰),每次修改都会创建新对象;StringBuffer和StringBuilder是可变的,修改时直接操作内部数组。 - 线程安全:
StringBuffer的方法加了synchronized锁,线程安全;StringBuilder无锁,线程不安全。 - 性能:
String修改性能最差(频繁创建对象);StringBuilder性能优于St
