第一行代码笔记 Activity

来源:互联网 发布:excel 删除重复数据 编辑:程序博客网 时间:2024/05/23 17:55
Activity(活动)是一种可以包含用户界面的组件,主要用于与用户进行交互,一个应用程序可以包含一个或多个活动
创建活动是,勾选Generate Layout File表示会自动为FirstActivity创建一个对应的布局文件,勾选Launcher表示将创建的活动设置为当前项目的主活动,勾选Backwards Compatibility表示会为项目表示启用乡下兼容模式
修改虚拟机的路径:新建一个环境变量,比如名为ANDROID_SDK_HOME (不可修改为其他)设置环境变量:ANDROID_SDK_HOME = D:\Android_Emulator(它会自动创建一个.android文件夹,新建的avd就在里面)


在xml文件中引用一个id,用@id/id_name,在xml文件中定义一个id则用@+id/id_name
android:layout_width:指定了当前元素的宽度,值为match_parent表示与父元素一样宽
android:layout_height:指定当前元素的高度,wrap_content表示高度根据里面的内容而定
android:text:指定当前元素显示的文字内容


Activity中调用setContentView方法给当前活动加载布局


在AndroidMenifest.xml文件中注册活动:在application标签中,通过activity标签进行注册,activity标签中的属性如下:
android:name  指定活动的名称
android:label  指定活动标题栏中的内容

Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知发送给用户,这些信息会在一段时间后自动消失,不会占用任何屏幕空间


在程序中,可以通过findViewByID()获取ID对应的布局文件中定义的元素,返回的是一个View对象
调用setOnClickListener为按钮注册一个监听器,View.OnClickListener监听器监听元素点击事件


Toast用法:调用makeText(Context context,String content,int time)创建一个Toast对象,content为显示的内容,time为显示的时长,Toast内部有两个常量,Toast.LENGTH_SHORT和Toast.LENGTH_LONG,调用show()显示出来


创建按钮Button:
1、在布局文件中创建Button标签
2、在Activity中获取该按钮对象,并监听点击事件
Button button1 = (Button)findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,"this is toast",Toast.LENGTH_SHORT).show();
}
});


创建菜单:
1、<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item //菜单项
android:id="@+id/add_item"   //菜单项的标识符
android:title="add" />       //菜单项显示的内容
<item
android:id="@+id/remove_item"
android:title="remove"/>
</menu>
2、在Activity中重写onCreateOptionMenu()方法
@Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main,menu);//为当前活动创建菜单
        return true;//表示该菜单会显示出来
}
3、在Activity中重写onOptionsItemSelected()方法来定义菜单响应事件

调用finish()方法可销毁当前活动


Intent是Android程序中各个组件进行交互的一种重要的方式,一般可用于启动活动,启动服务以及发送广播等场景,Intent大致可分为两种,显式Intent和隐式Intent,Activity中提供一个方法startActivity()专门用于启动活动
显式Intent:
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
//SecondActivity.class为活动目标,MainActivity.this为上下文
隐式Intent:使用action创建Intent,每个Intent只能创建一个action,但可以有多个category
Intent intent = new Intent("com.example.testapplication.ACTION_START");
intent.addCategory("com.example.testapplication.MY_CATEGORY");
startActivity(intent);

在应用程序中实现打开一个网页:
    Intent intent = new Intent("Intent.VIEW");
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
//setData()方法接收Uri对象,主要用于指定当前Intent正在操作的数据
同时要在<intent-filter>标签中配置一个data标签
android:scheme  用于指定数据的协议部分,如上面的http部分
android:host    指定数据的主机名部分,如www.baidu.com部分
android:port    指定数据的端口部分,一般紧随在主机名之后
android:path    指定主机名和端口之后的部分,如一段网址跟在域名之后的内容
android:mimeType用于指定可以处理的数据类型,允许使用通配符的方式进行指定
android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category加到intent中

使用intent调用系统中的拨号:
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:l0086"));
startActivity(intent);


使用intent传递数据,Intent中提供了一系列putExtra()方法的重载,可以将想要传递的数据暂存在Intent中,启动另一个活动后再将这些数据从Intent中取出来,使用getStringExtra()方法取出这些数据


Activity中startActivityForResult():该方法期望在活动销毁时返回一个结果给上一个活动,该方法接收两个参数,第一个是Intent,第二个参数是请求码,用于在之后的回调中判断数据的来源
setResult()用于向上一个活动返回数据接收两个参数,一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED,第二个参数则把带有数据的Intent传递回去
调用startActivityForResult()方法来启动下一个Activity,在Activity销毁之后会回调到上一个活动的onActivityResult()方法,因此我们要在前一个Activity中重写该方法onActivityResult()有三个参数,低于个是requestCode,请求活动时传入的请求码,第二个参数是resultCode,即我们在返回数据时传入的处理结果,第三个参数是data,即携带着返回数据的Intent
用户按下BACk键时,会调用当前Activity中的onBackPressed()方法


每个活动在其生命周期中最多可能会有四种状态:
1、运行状态。2、暂停状态。3、停止状态。4、销毁状态

Activity类中定义了7个回调方法,覆盖了生命周期的每一个环节:
1、onCreate():会在活动第一次创建时调用
2、onStart():当活动由不可见变为可见的时候调用
3、onResume():在Activity准备好和用户进行交互的时候调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态
4、onPause():在系统准备去启动或者恢复另一个活动的时候调用,通常在该方法中将一些消耗CPU的资源释放掉,保存一些关键数据
5、onStop():在活动完全不可见的时候调用,如果启动的新活动是一个对话框式的活动,那么onPause()会执行,而onStop不会被执行
6、onDestory():这个方法在活动销毁之前调用
7、onRestart():这个方法由停止状态变为运行状态之前调用

可将活动分为三种生存期:
1、完整生存期:活动在onCreate()和onDestory()经历的,为完整生存期
2、可见生存期:活动在onStart()和onStop()之间经历的,为可见生存期
3、前台生存期:活动在onResume()和onPause()之间经历的就是前台生存期


Android重命名文件:选定要重命名的文件->Refactor->Rename file


Activity中提供了一个onSaveInstanceState()回调方法,这个方法可以保证在活动被回收前一定会被调用,我们可以通过这个方法来解决活动被回收是临时数据得不到保存的问题,onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供一系列的方法用于保存数据,比如可以使用 putString()方法保存字符串,每个保存方法需要传入两个参数,第一个参数是键,用于后面从Bundle获取内容,第二个参数是真正保存的内容,Intent可以跟Bundle结合一起传递数据


在实际项目中我们应该根据特定的需求为每个活动指定恰当的启动模式,启动模式一共四种,分别是standard,singleTop,singleTask,和singleInstance,可以在AndroidMenifest.xmlzhong通过给<Activity>标签指定android:launchMode属性来选择启动模式
1、standard:是活动默认是启动模式,在不显式指定的情况下,所有活动都会自动使用这种启动模式,在该模式下每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置,系统不会在乎这个活动是否在返回栈中存在,每次启动都会创建该活动的一个新的实例
2、singleTop:该模式下,如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,,不会在创建新的活动实例(android:launchMode="singleTop")
3、singleTask:该模式下,每次启动该活动时首先会在返回栈中检查是否存在该活动的实例,如果发现已存在则直接使用该实例,并把这个活动之上的活动统统出栈
4、singleInstance:该模式下的活动会启动一个新的返回栈来管理这个活动,解决了共享活动实例的问题


杀掉进程的代码:android.os.Process.killProcess(android.os.Process.myPid()),但是只用于杀掉当前进程