目录

Android跨进程通信之小例子(一)
Android跨进程通信之非AIDL(二)
Android跨进程通信之Proxy与Stub(三)
Android跨进程通信之AIDL(四)

跨进程通信

跨进程通信就是IPCIPC就是跨进程通信。因为每个进程都是独立的,有属于自己的内存空间,所以出于安全性考虑,最起码自己的东西不能随便就被人家操作。跨进程通信要比在同一进程中相互通信麻烦得多,限制也是比较多的。
对于Android而言,跨进程通信的方法有以下几种:

  • 跨进程调用Activity : 简单提一下
  • 使用Content Provider提供支持其他应用程序对数据进行增删改查操作 : 不说
  • 使用Broadcast去主动发送数据给其他的应用程序 : 不说
  • 最后就是Service,也是这个系列中最啰嗦的一个部分。 : 重点说

跨进程调用Activity

其实跨进程调用Activity,我们在很多地方有使用到。只不过是我们没怎么去注意而已,毕竟人家称为隐式调用。。。

举个例子

举例子来说,我们平常利用系统的电话打电话,相机拍照,图库选取图片等等。都是使用了跨进程调用Activity的例子。

  • 打电话
Intent callIntent = new  Intent(Intent.ACTION_CALL, Uri.parse("tel:12345678910" );  startActivity(callIntent);  
  • 拍照
Intent intent = new  Intent(MediaStore.ACTION_IMAGE_CAPTURE);  startActivity(intent);  

我们跟进去不难发现有两个常量,这两个常量其实就是一个称为action的东西,如果我们想自己的Activity可以被打开,设置Action是一种方法

  • public static final String ACTION_CALL = "android.intent.action.CALL";
  • public final static String ACTION_IMAGE_CAPTURE = "android.media.action.IMAGE_CAPTURE";

Action的设置

其实Action的设置很简单,只要在AndroidManifest.xml配置即可。其中的action中的name属性必须是唯一的。否则多个APP会出现冲突。

                

调起

要调用也很简单,为了说明情况。就不使用构造方法设置action了。

Intent intent = new  Intent();intent.setAction("top.august1996.myactivity");startActivity(intent);

另一种隐式调用

如果你想去调用别人的Activity,可是别人没有设置Action,那就用下面这种方法。

startActivity(new Intent().setComponent(new ComponentName("top.august1996.example", "top.august1996.example.MyActivity")));

上面的ComponentName构造函数的第一个参数是Activity所在应用程序的包名,第二个参数是Activity所在的包名+Activity的类名

更多相关文章

  1. android 事件分发机制(源码解析)
  2. 《Android移动应用基础教程》(Android(安卓)Studio)(第二版)黑马教程
  3. android之调用webservice 实现图片上传
  4. Android(安卓)Activity 简介
  5. 2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等
  6. Android设备扫描机制详解
  7. Android(安卓)Webview 基本使用总结
  8. android 事件分发机制(源码解析)
  9. Android分享功能

随机推荐

  1. Android ApiDemos示例解析(138):Views->L
  2. android下repo的基本使用
  3. NDK编译报错 undefined reference to 'vt
  4. android根据不同分辨率获取不同分辨率下
  5. Android首选项SharedPreference-android
  6. 单击Button 更改屏幕方向
  7. android 自定义实现圆角Dialog
  8. Android Studio多渠道打包
  9. android 拨打电话与发送短信
  10. 打印时间(MS级别)