Activity
2016-03-30 17:02
483 查看
运行环境:Android Studio 1.5
模拟器:Genymotion
2.在AndroidManifest.xml中注册
3.设置布局文件
xml是一种标记语言
protected
onCreate
SetContentView
按钮监听
Button btnStart;
btnStart=(Button) findViewById(R.id.btn_start_second)
btnFinish.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){//关闭自己}}; )
第一种方法
Intent intent = new Intent();
intent.setClass(MyActivity.this, SecondActivity.class);
startActivity(intent);
startActivity(intent);
intent.setAction(“abcd.SecondActivity”);
startActivity(intent);
属性的值是一个字符串
通过setAction()方法或在清单文件AndroidManifese.xml中设置
当有多个Action匹配隐式启动条件时,将会弹出选择框
通过addCategory()方法或在清单文件AndroidManifest.xml中设置
常用值
android.intent.category.LAUNCHER设置该组件为在当前应用程序启动器,通常为入口ACTION_MAIN配合使用
android.intent.category.DEFAULT是安卓系统中木人的执行方式,按照普通Activity的执行方式执行。
详看博客:两分钟彻底让你明白Android Activity生命周期(图文)!知识库博客园 http://kb.cnblogs.com/page/70125/
Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码:
举个例子,修改ActivityDemo.java(我这里重新写了以上的七种方法,主要用Log打印),代码如下:
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
singleTop
singleTask
singleInstance
Android入门:Activity四种启动模式 - meizixiong - 博客园
http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html
getTaskId()可以获取当前的taskid。
Intent几种常见的flags:
1.FLAG_ACTIVITY_NEW_TASK:APPa调用APPb会新建一个task
2.FLAG_ACTIVITY_CLEAR_TOP:启动task中已经有了的activity的话会直接跳到那个activity,并删除上面的activity。
3.FLAG_ACTIVITY_REORDER_TO_FRONT启动task中已经有了的act
b891
ivity的话会把他直接调到task最顶上,也不会删除任何activity.
4.FLAG_ACTIVITY_SINGLE_TOP:目前发现与Activity启动模式中的singleTop效果相同.
在第二个activity里调用getIntent().getStringExtra(“var”)
通过Intent传递基本数据类型
通过Bundle传递基本数据类型
复杂类型的数据传递Serializable
复杂类型的数据传递Parceable
activity数据回传
startActivityForResult(intent);
onActivityResult(requestCode, resultCode, data)
setResult(RESULT_OK, intent)
打开系统的拨号界面
intent.setAction(Intent.ACTION_CALL);
打开系统发送短信界面
Uri smsToUri = Uri.parse(“smsto:”+”10086”)
intent.setAction(Intent.ACTION_SENDTO);
intent.setData(smsToUri);
intent.putExtra(“smsbody”)
打开系统相机界面
intent.setAction(Intent.ACTION_***_CAMERA);
1. 如果data的URI和datatype为空,则 filter 的URI和type也必须为空,才能匹配成功
2. 如果data的URI不为空,但是datatype为空,则 filter 必须定义URI并匹配成功,且type为空,才能匹配成功
3. 如果data的URI为空,但是datatype不为空,则 filter 必须URI为空,定义type并匹配成功,才能匹配成功
4. 如果data的URI和data都不为空,则 filter 的URI和type都必须定义并匹配成功,才能匹配成功。对于URI部分,有一个特殊处理,就是即使filter没有定义URI,content和file两种URI也作为既存的URI存在。
模拟器:Genymotion
Activity基础
概念
Activity就是一个可视化的用户界面,负责创建一个屏幕窗口,防止UI组件,供用户交互。用法
1.创建你的Activity类2.在AndroidManifest.xml中注册
3.设置布局文件
AndroidManifest.xml
应用程序的清单文件xml是一种标记语言
Activity启动方法
显式启动
class跳转
新建一个类继承Activityprotected
onCreate
SetContentView
按钮监听
Button btnStart;
btnStart=(Button) findViewById(R.id.btn_start_second)
btnFinish.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){//关闭自己}}; )
第一种方法
Intent intent = new Intent();
intent.setClass(MyActivity.this, SecondActivity.class);
startActivity(intent);
包名类名跳转
- Intent intent1 = new Intent(); - intent.setClassName(MyActivity.this, "com.lkj.lesson.activitylesson1.SecondActivity"); - startActivity(intent1);
第三种方法
- Intent intent = new Intent(); - ComponentName componentName = new ComponentName(MyActivity.this, SecondActivity.class); - intent.setComponent(componentName); - startActivity(intent);
隐式跳转
隐式启动第一种写法
Intent intent = new Intent(“abcd.SecondActivity”);//构造intent时传入action namestartActivity(intent);
隐式启动第二种写法
Intent intent = new Intent();//构造intent完成后设置action nameintent.setAction(“abcd.SecondActivity”);
startActivity(intent);
注意
如果自己定义的某个Activity要通过隐式启动,在AndroidManifest.xml的category标签必须加上android.intent.category.DEFAULT,否则不起作用注意事项
category标签必须设置成DEFAULTAction
代表系统中已经定义的一系列常用的动作,可以启动你想要的动作属性的值是一个字符串
通过setAction()方法或在清单文件AndroidManifese.xml中设置
当有多个Action匹配隐式启动条件时,将会弹出选择框
Category
指定当前Action被执行的环境通过addCategory()方法或在清单文件AndroidManifest.xml中设置
常用值
android.intent.category.LAUNCHER设置该组件为在当前应用程序启动器,通常为入口ACTION_MAIN配合使用
android.intent.category.DEFAULT是安卓系统中木人的执行方式,按照普通Activity的执行方式执行。
Activity生命周期
详看博客:两分钟彻底让你明白Android Activity生命周期(图文)!知识库博客园 http://kb.cnblogs.com/page/70125/
Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码:
view plaincopy to clipboardprint? public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
举个例子,修改ActivityDemo.java(我这里重新写了以上的七种方法,主要用Log打印),代码如下:
package com.tutor.activitydemo; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class ActivityDemo extends Activity { private static final String TAG = "ActivityDemo"; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.e(TAG, "start onCreate~~~"); } @Override protected void onStart() { super.onStart(); Log.e(TAG, "start onStart~~~"); } @Override protected void onRestart() { super.onRestart(); Log.e(TAG, "start onRestart~~~"); } @Override protected void onResume() { super.onResume(); Log.e(TAG, "start onResume~~~"); } @Override protected void onPause() { super.onPause(); Log.e(TAG, "start onPause~~~"); } @Override protected void onStop() { super.onStop(); Log.e(TAG, "start onStop~~~"); } @Override protected void onDestroy() { super.onDestroy(); Log.e(TAG, "start onDestroy~~~"); } }
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
Activity启动模式
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;四种启动模式
standardsingleTop
singleTask
singleInstance
Android入门:Activity四种启动模式 - meizixiong - 博客园
http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html
getTaskId()可以获取当前的taskid。
Intent几种常见的flags:
1.FLAG_ACTIVITY_NEW_TASK:APPa调用APPb会新建一个task
2.FLAG_ACTIVITY_CLEAR_TOP:启动task中已经有了的activity的话会直接跳到那个activity,并删除上面的activity。
3.FLAG_ACTIVITY_REORDER_TO_FRONT启动task中已经有了的act
b891
ivity的话会把他直接调到task最顶上,也不会删除任何activity.
4.FLAG_ACTIVITY_SINGLE_TOP:目前发现与Activity启动模式中的singleTop效果相同.
Activity数据传递
在第一个activity里设置intent.putExtra(“var”,”String_content”)在第二个activity里调用getIntent().getStringExtra(“var”)
通过Intent传递基本数据类型
通过Bundle传递基本数据类型
复杂类型的数据传递Serializable
复杂类型的数据传递Parceable
activity数据回传
startActivityForResult(intent);
onActivityResult(requestCode, resultCode, data)
setResult(RESULT_OK, intent)
启动系统的Activity
需要申请权限打开系统的拨号界面
intent.setAction(Intent.ACTION_CALL);
打开系统发送短信界面
Uri smsToUri = Uri.parse(“smsto:”+”10086”)
intent.setAction(Intent.ACTION_SENDTO);
intent.setData(smsToUri);
intent.putExtra(“smsbody”)
打开系统相机界面
intent.setAction(Intent.ACTION_***_CAMERA);
Activity启动过程中的intentFilter
Data匹配的四条规则:1. 如果data的URI和datatype为空,则 filter 的URI和type也必须为空,才能匹配成功
2. 如果data的URI不为空,但是datatype为空,则 filter 必须定义URI并匹配成功,且type为空,才能匹配成功
3. 如果data的URI为空,但是datatype不为空,则 filter 必须URI为空,定义type并匹配成功,才能匹配成功
4. 如果data的URI和data都不为空,则 filter 的URI和type都必须定义并匹配成功,才能匹配成功。对于URI部分,有一个特殊处理,就是即使filter没有定义URI,content和file两种URI也作为既存的URI存在。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories