您的位置:首页 > 移动开发 > Android开发

Android基础——四大组件之Activity

2016-05-12 23:46 555 查看
这几天会优先整理出四大组件的部分,之后再写其他的。先从Activity开始

Activity

Xmind



先扯点别的

推荐一个火狐浏览器,用来看AndroidAPI文档,开发必备。

首先,API文档在SDK里:D:\SDK\docs\index.html

用火狐浏览器打开,火狐浏览器设置为脱机工作,这样就能够在里面搜索你想要的API了:



点击第一条,android.app.Activity,查看其API



其实从这里也能看出Android的一些框架,除去Java部分,android的根类可以说是Context类,上下文属性这里也单独介绍一下,之后经常用到,却并不明白他存在的意义。参考至:【qingjuning的博客】

结构图



更具体的请转到链接【qingjuning的博客】

说一点我自己的理解:其实在javaweb的开发中更多的使用到了这个Context,作为一个体系的基类,他在Android中的功能体现并不明显,但在使用了之后也能理解,他在使用时,是携带了其代表的对象的信息的。通过他也能获取其对应的子类对象的内容属性等,作为一个父类引用子类对象的应用场景。

这里我们先引用API里的一张图:



Activity生命周期:在Xmind里也已经概述了他的三种状态以及7个阶段,为了加深理解先来段代码压压惊:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("tag","onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.d("tag","onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d("tag","onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d("tag","onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d("tag","onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("tag","onDestroy");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("tag","onRestart");
}


这里直接新创建一个module,在MainActivity里覆写这些方法,也就是Activity的各个阶段,运行之。。

开启应用时:



Activity被创建,开启,继续执行。。进入running状态

点击home键



点击Home键并未执行onDestroy方法,而是只执行停止而后进入Stopped状态。

重新点击应用进入界面



当重新点击应用进入时,原本并未被销毁的应用将被唤醒执行onRestart方法,再调用到onStart方法,再执行onResume进入running状态

点击back



而点击back键不同,将会先停止之后执行onDestroy方法。

这就是Activity整个的生命周期,只要记住这7个方法,以及他们对应的执行顺序与状态即可。

Activity的跳转方式

隐式跳转

创建新module,并创建一个SecondActivity的类以及他的布局文件AndroidManifest.xml:

<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="SecondActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>


SecondActivity:

public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(this, "这是SecondActivity", Toast.LENGTH_SHORT).show();
}
}


MainActivity:

public void Implicit(View view){
Intent intent = new Intent();
intent.setAction("SecondActivity");
startActivity(intent);
}


在activity_main里绑定跳转按键事件:

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="Implicit"
android:text="second"
/>


首先添加一个SecondActivity类,创建Activity清单文件注册该页面activity并且为其绑定事件,以及添加Default信息,然后为MainActivity添加跳转所需的按键,并为这个按键绑定隐式跳转的点击事件,在MainActivity实现这个事件,事件内创建Intent意图,为意图添加Action,这个事件必须与清单文件中注册的名字相同,才能在跳转时进行事件匹配然后找到目标跳转。

这里跳转的是本应用内的新Activity,而隐式跳转能够跳转其他应用以及系统应用等,只要注册事件,并添加这个事件即可。

显示跳转

依旧在本应用内进行,先创建一个ThirdActivity类:

public class ThirdActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toast.makeText(this, "这是ThirdActivity", Toast.LENGTH_SHORT).show();
}
}


然后是清单文件:

<activity android:name=".ThirdActivity"/>


MainActivity:

public void Explicit(View view){
Intent intent = new Intent();
intent.setClass(this,ThirdActivity.class);
startActivity(intent);
}


activity_main也同样绑定一个按键,以及按键事件Explicit,显式跳转不需要添加事件,而是直接在Intent意图中添加对应的class文件直接指向那个activity,但这样的跳转至局限在本应用内,无法跳转至外部应用。

至于最后一个启动方式的部分,Xmind的概括已经足够了,在这之前只需要了解过栈内存的童鞋应该没有问题,很容易理解的内容。

Activity内容偏多点,写的有点慢,最近会继续挑几天把四大组件都整理出来。

未完待续。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android