zoukankan      html  css  js  c++  java
  • 说一说activity

    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模式的简单的实现了。 

    好好学习天天向上。

  • 相关阅读:
    .Net 请求Web接口Post和Get方法
    搭建 Windows Server 2012 FTP 服务器
    使用C#开发HTTP服务器系列之访问主页
    使用C#开发HTTP服务器系列之Hello World
    使用C#开发HTTP服务器系列之实现Get和Post
    HTTP网络请求原理 (三) 简单模拟HTTP服务器
    HTTP请求报文和HTTP响应报文
    HTTP协议Keep-Alive模式详解和HTTP头字段总结
    今天修了一个bug,关于debug日志的问题
    HMM(隐马尔可夫),这篇讲的不错
  • 原文地址:https://www.cnblogs.com/manuosex/p/3217613.html
Copyright © 2011-2022 走看看