Activity

Activity

生命周期

(启动)onCreate    (不可见)  ->  onStart  (可见)  ->    onResume    (进入前台)
(销毁)onDestroy   <-  (停止,onRestart) onStop   <-  (进入后台)onPause

Activity切换

A.startActivity(B);
A.onPause()
B.onCreate()
B.onStart()
B.onResume()
A.onSaveInstanceState()
A.onStop()

home和back

点击home键当前activity会被暂停,进入后台。
back键系统会销毁当前activity。

Activity配置

在启动Activity,AMS会检查待启动Activity是否在manifest.xml中配置过,如果没有进行配置,则跑出异常:ActivityNotFoundException

    <activity
            android:name=".ui.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.SubActivity"
            android:screenOrientation="portrait" />

Activity启动

显示

Intent intent = new Intent(Context, Class);
startActivity(intnet);

隐示

数据传递

        Intent intent = new Intent(this,SecondActivity.class);
        //1. 直接设置,内部也是使用Bundle
        intent.putExtra("key", "value");

        //2. 使用bundle
        Bundle bundle = new Bundle();
        bundle.putString("key", "value");
        intent.putExtra("bundle",bundle);
        startActivity(intent);

Intent的源码

public class Intent implements Parcelable, Cloneable {
private Bundle mExtras;
public Intent putExtra(String name, String value) {
        if (mExtras == null) {
            mExtras = new Bundle();
        }
        mExtras.putString(name, value);
        return this;
    }
}

Bundle

public final class Bundle extends BaseBundle implements Cloneable, Parcelable {
    public void putString(@Nullable String key, @Nullable String value) {
        unparcel();
        mMap.put(key, value);
    }
}

public class BaseBundle {
    
    ArrayMap<String, Object> mMap = null;

    BaseBundle(@Nullable ClassLoader loader, int capacity) {
        mMap = capacity > 0 ?
                new ArrayMap<String, Object>(capacity) : new ArrayMap<String, Object>();
        mClassLoader = loader == null ? getClass().getClassLoader() : loader;
    }
    
    BaseBundle() {
        this((ClassLoader) null, 0);
    }
    
    public void putString(@Nullable String key, @Nullable String value) {
        unparcel();
        mMap.put(key, value);
    }


版本兼容

有时候在高版本上开发时到兼容低版本的手机上,就需要对版本进行检测


public void btnOnclick(){
        int cx = btn_open.getWidth()/2;
        int cy = btn_open.getHeight()/2;

        float radius = btn_open.getWidth();
        //使用5.0的特性,这里先做检查,如果不做检查的话,在低版本上运行会崩溃。
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            Animator anim = ViewAnimationUtils.createCircularReveal(btn_open,cx,cy,radius,0);
            anim.addListener(new AnimatorListenerAdapter() {

            });
        }
}

通过检查版本号基本上程序就可以运行了。如果设置完项目还提示错误的话就要使用下面的标签。以前在eclipse上使用lint会提示错误,但是现在使用studio时没有提示,还不知道什么原因。

@TargetApi(21)

告诉编译器在低于版本号21的机器上不要提示错误。

@SuppressLint("NewApi")

如果api版本高于最低版本,则忽略错误提示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • 一、概述 Activity 作为与用户交互的一个窗口,是使用非常频繁的一个基本组件。Android系统是通过Act...
    三也视界阅读 2,230评论 3 11
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,870评论 25 707
  • 曾去太行昆山村,岭秀寂静少人闻。 偶有写生学生过,鸡犬之声如乡魂。 寻果误入歧途路,突遇画师点白云。 长想隐居此山...
    绿野V仙踪阅读 316评论 0 0
  • 入冬了,空气里透着丝丝凉意,银杏却把温暖传到了心里。金黄的肤色褪去了太阳的焦灼,多了份体贴的柔和,久久仰望满眼婆娑...
    mjhjht阅读 299评论 5 1
  • 那天路过一户人家,门口坐着一个小姑娘,应该高二的年纪,拿着手机看视频,嘴里时不时爆出一句脏话,听得我莫名一震。 我...
    木头姑娘阅读 185评论 0 0