activity与service,provider,receiver并称为 android的四大对象。

而activity,是展现界面的必不可少的组件。我这里有几个问题要问了,他是如何加载,他是如何进行npc的。具体是怎么实现的了。

说道activity的加载,这里就不得不提manifest清单文件了,在清单文件中,我们经常看到这样的xml源代码,

<activity
android:name="com.example.sellclientgui.MainQActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

像以上的源代码就是告诉其开始的界面是从action下的main的activity开始的。他这里又是怎么加载到项目中去的了,无非是由packagemanager这个类对清单文件进行了xml解析,于是就加载到项目中去了。

activity是怎么进行了通讯的的?

不知道大家能否对这两行熟不熟悉。

Intent intent=new Intent(PublicDefine.context, MainQActivity.class);
PublicDefine.context.startActivity(intent);

可见了,activity之间的跳转是由intent开始的,我们可以说他们之间的是是 各个线程之间的npc。那么 这个startactivity是如何实现的,最简单的方法就是看source code。

source code 清楚的告诉我们,这个startactivity 是在context 这个父类中定义的,他的实现contextimpl这个类中,他的 实现的源代码又是如下:

@Override
public void startActivity(Intent intent) {
if ((intent.getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) == 0) {
throw new AndroidRuntimeException(
"Calling startActivity() from outside of an Activity "
+ " context requires the FLAG_ACTIVITY_NEW_TASK flag."
+ " Is this really what you want?");
}
mMainThread.getInstrumentation().execStartActivity(
getOuterContext(), mMainThread.getApplicationThread(), null, null, intent, -1);
}

他实现的源代码原理就是判断当前意图对象是否合理,在将其 交给instrumention这个自动化控件来执行activity。 这个执行activity方法是在那里进行实现了。观察源代码的时候,我们看到了一个activitymonitor这个类对其监听,这是一个observer观察者模式的实现。

这就是activity模式的简单的实现了。

好好学习天天向上。

说一说activity相关推荐

  1. 点击事件如何传递到Activity中

    1.首先,当我们触摸屏幕时,通过Android消息机制,从Looper从MessageQueue中取出该事件,发送给WindowInputEventReceiver. 2.WindowInputEve ...

  2. Activity在有Dialog时按Home键的生命周期

    当一个Activity弹出Dialog对话框时,程序的生命周期依然是onCreate() - onStart() - onResume(),在弹出Dialog的时候并没有onPause()和onSto ...

  3. Activity的四种启动模式

    standard:标准的启动模式,默认启动模式.启动一个activity就会创建该activity的实例. singleTop:如果启动的activity已经位于栈顶,那么就不会重新创建一个新的act ...

  4. 横竖屏切换时Activity的生命周期

    1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏执行一次,切竖屏执行两次. 2.设置Activity的android:configChang ...

  5. 源码分析-Activity的启动流程

    以android 6.0源码为参考,其他版本api会稍有不同 在Activity中,启动一个Activity的方法 @Override public void startActivity(Intent ...

  6. 总结笔记-Activity的启动流程

    Activity.startActivity Activity.startActivityForResult Instrumentation.execStartActivity ActivityMan ...

  7. java类安卓app 简介_android.app.Activity 的介绍

    文章可随意转载,但务必注明源地址 发现当前Android的资料不是很多,而且对于Activity的介绍也很少,所以把官方文档的android.app.Activity的介绍翻译了一下,加入了一些自己的 ...

  8. Android 隐式跳转(Activity的隐式跳转)

    学而时习之,温故而知新,放假前回顾下android 的 隐式跳转 Activity的显式跳转: 是直接指定需要调用的Activity Activity的隐式跳转: 不明确指定启动哪个Activity, ...

  9. Android Fragment 调用宿主Activity 里面的方法

    方法 1 : 直接在Fragment 写 MainActivity main = (MainActivity) getActivity();main.xx; // xx 是 MainActivity ...

  10. Android 跳转Activity 的时候出现闪屏问题处理

    一般这种问题出现的原因就是某些activity的主题的设置了透明引起的 处理方法就是在界面跳转的时候时候添加 overridePendingTransition(0, 0); 例如 Intent in ...

最新文章

  1. java sslsocket程序_JAVA与C++进行sslsocket通信,JAVA做服务端或客户端
  2. 【Java】Lucene检索引擎详解
  3. 三棱锥四面体html css,CSS transform属性实现旋转的四面体
  4. plc通讯的握手信号_MES与PLC握手的几种方式-控制器/处理器-与非网
  5. java实现对HDFS增删改查(CRUD)等操作
  6. php 5.3.3 漏洞,PHP 5.3.10多个拒绝服务漏洞
  7. Python安装scikit-learn包
  8. db2 联合数据源 mysql_myeclipse连接db2的数据源怎么配
  9. 算法高级(25)-分布式TopN算法玄机
  10. azure云数据库_Azure SQL数据库中的漏洞评估和高级威胁防护
  11. (XWZ)的Python学习笔记Ⅱ------面向对象编程
  12. uniapp app端登录
  13. 思维方式-《成功与运气》书中的精髓:成功到底是靠天赋、努力,还是运气?
  14. Kent Beck简单设计四条规则
  15. 贷款用户逾期问题Task2
  16. android 设置打印级别
  17. 杨辉三角杨辉三角 || (JavaScript)
  18. verilog语法中+:和-:用法
  19. nginx的作用与原理
  20. 小论文投稿经历与经验

热门文章

  1. 【Smooth】非线性优化
  2. 解决firefox ubuntu无法打开页面的问题
  3. 关于XP进程问题(转载)
  4. 对比.Net PetShop和Duwamish来探讨Ado.Net的数据库编程模式
  5. 常见 Datagrid 错误
  6. 开启一个新的终端并执行特定的命令
  7. 跨平台PHP调试器设计及使用方法——界面设计和实现
  8. 开源库jemalloc简介
  9. 【数据库】sqlite中的限制:数据库大小、表数、列数、行数、参数个数、连接数等
  10. 【Qt】QtCreator中关于Style Plugin Example没有效果的修改方法