Activity与Intent
android5个进程等级
1.Activity process(critical priority):活动进程(前台进程)
2.Visible process(High priority):可见进程
3.Started Service process(High priority)
4.Background process(Low priority)
5.Empty process(Low priority)
退出进程:
System.exit(8);//系统进程正常退出
Process.killProcess(Process.myPid);//类似于垃圾回收
Activity创建过程:
1.建立Activity类及定义属性及内部方法;
2.注册Activity到manifast中;
3.在启动中使用onCreat()实现业务:
(1)界面定义
(2)setContentView()加载页面;
//将layout压缩成View
View view=this.getLayoutInflater().inflate(R.layout.activity_activity_demo, null);
Intent:
Intent有两种:Explicit intents(明确的意图);Implicit intents (含蓄的意图)
Explicit intents:通过组件名启动
Implicit intents:通过匹配manifest file中的Intent filter来启动组件,若匹配结果仅有一项,直接启动;若多项匹配,根据弹出的dialog进行选择
1.Explicit intents
Intent属性:Component:启动Explicit intents必不缺少的
//显示启动Intent,必须指定Intent属性Component,Component属性需要指定ComponentName//1.直接创建时指定Intent intent=new Intent(ActivityDemoActivity.this, ActivityIntentDemo.class);Intent intent=new Intent();//2.通过ComponentName构造器来指定;只须指定包名与类名就可以唯一确定组件名ComponentName componentName=new ComponentName("androidstudy.ActivityDemo","androidstudy.ActivityDemo.ActivityIntentDemo");ComponentName componentName=new ComponentName(ActivityDemoActivity.this,ActivityIntentDemo.class);ComponentName componentName=new ComponentName(ActivityDemoActivity.this,"androidstudy.ActivityDemo.ActivityIntentDemo");intent.setComponent(componentName);//3.setClass()与setClassName()指定intent.setClass(ActivityDemoActivity.this, ActivityIntentDemo.class);intent.setClassName(ActivityDemoActivity.this, "androidstudy.ActivityDemo.ActivityIntentDemo");intent.setClassName("androidstudy.ActivityDemo","androidstudy.ActivityDemo.ActivityIntentDemo");startActivity(intent);
返回Intent传递参数是否成功
调用startActivityForResult(intent, 1234);
intent是传递的Intent,1234为RequestResult,成功后回调函数protected void onActivityResult(int requestCode, int resultCode, Intent data) ;
在新的Activity 中通过调用函数setResult(5678,mIntent);设置回调的resultCode与Intent
//调用Intent的Activity
public void demo(View view){ //显示启动Intent,必须指定Intent属性Component,Component属性需要指定ComponentName//1.直接创建时指定//Intent intent=new Intent(ActivityDemoActivity.this, ActivityIntentDemo.class);intent=new Intent();//2.通过ComponentName构造器来指定;只须指定包名与类名就可以唯一确定组件名//ComponentName componentName=new ComponentName("androidstudy.ActivityDemo","androidstudy.ActivityDemo.ActivityIntentDemo");//ComponentName componentName=new ComponentName(ActivityDemoActivity.this,ActivityIntentDemo.class);//ComponentName componentName=new ComponentName(ActivityDemoActivity.this,"androidstudy.ActivityDemo.ActivityIntentDemo");//intent.setComponent(componentName);//3.setClass()与setClassName()指定intent.setClass(ActivityDemoActivity.this, ActivityIntentDemo.class);//intent.setClassName(ActivityDemoActivity.this, "androidstudy.ActivityDemo.ActivityIntentDemo");//intent.setClassName("androidstudy.ActivityDemo","androidstudy.ActivityDemo.ActivityIntentDemo");intent.putExtra("STUDY", "hello 阳光 ");startActivityForResult(intent, 1234);}protected void onActivityResult(int requestCode, int resultCode, Intent data) {if(resultCode==5678){Toast.makeText(ActivityDemoActivity.this, data.getExtras().getString("STUDY"), Toast.LENGTH_LONG).show();System.out.println(intent.getStringExtra("STUDY"));}super.onActivityResult(requestCode, resultCode, data);};
//接收Intent的Activity
public void click(View view){mIntent.putExtra("STUDY", "hello moon");//设置返回值setResult(5678,mIntent);//关闭此Activityfinish();}
2.Implicit intents
//隐式启动Intent//启动电话Activity,Action:Intent.ACTION_DIAL Intent intent=new Intent();intent.setAction(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:15169091171"));startActivity(intent);//启动电话Activity,Action:Intent.ACTION_CALLIntent intent=new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:15169091171"));startActivity(intent);
通过代码分析 Action:Intent.ACTION_DIAL与Activity,Action:Intent.ACTION_CALL区别:
DIAL启动的Action并不会直接拨号,需用户进行确然拨号;
ACTION_CALL启动的Action可直接进行拨号,但需要在manifest.xml文件中加上权限<uses-permission android:name="android.permission.CALL_PHONE"/>
Intent intent=new Intent();intent.setAction("moon.testDemo");intent.setData(Uri.parse("http://www.hao123.com"));startActivity(intent);
xml:<activity android:name=".ActivityIntentDemo"><intent-filter><action android:name="moon.testDemo"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="http"/></intent-filter></activity>
备注:1.虽然Activity中并没有设置category属性,但默认设置属性为DEFAULT,所以在manifest.xml文件中要添加
<category android:name="android.intent.category.DEFAULT"/>,否则,运行会出现错误。
2.若 SaveInstanceState()函数会自动保存我们提供android:id的空间
2.状态恢复onRestoreInstanceState()或onCreat():onResume()之前调用
备注:
1.重构onSaveInstanceState()与onRestoreInstanceState()函数时,需调用父类函数;
2.onRestoreInstanceState()函数不一定会被调用,一般恢复函数使用onCreat();
3.由于onSaveInstanceState()函数不一定会被调用,所以一般存储短暂的状态,存储长期状态一般使用onPause();
ConfigurationChanges
获取configuration Configuration cfg=getResources().getConfiguration()
Activity基类:
FragmentActivity、AccountAuthenticatorActivity(实现账户管理界面)、TabActivity(Tab界面)、ListActivity(列表界面)、LauncherActivity(Activity列表界面)、PreferenceActivity(程序参数设置存储界面)、AliasActivity(别名Activity基类,用于开始别人时结束自己)、ExpandableListActivity(可扩展列表界面)
转载于:https://www.cnblogs.com/Eudora/p/3513663.html
Activity与Intent相关推荐
- 应用程序基础知识:activity和intent——Android开发秘籍
应用程序基础知识:activity和intent --Android开发秘籍 v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#defaul ...
- Android Activity和Intent机制学习笔记
转自:http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html Activity Android中,Activity是所有程序的根本, ...
- [转]Android Activity和Intent机制学习笔记
Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com/f ...
- 常见的Activity Action Intent常量
Intent的中文意思是"意图,目的"的意思,可以理解为不同组件之间通信的"媒介"或者"信使". 目标组件一般要通过Intent来声明自己的 ...
- Activity与Intent机制的学习笔记--转自feisky
Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com/f ...
- 2011/05/26 Unable to resolve activity for: Intent错误的解决方法
今天我继续学习编写robotium的测试程序.目标是前些天在网上下来的android的一个扫雷源码(类名为test,包名为jim.test).我的测试程序(类名为testTest,包名为jim.tes ...
- 【ZT】Android Activity和Intent机制学习
Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(见http://www.cnblogs.com/f ...
- Activity和Intent,打电话,发送短信
在Android开发过程中,相信你对Intent这个东西并不陌生,它的作用非常广泛,可以用来传递广播,启动另一个Activity,甚至启动另一个应用程序,注意,有一点非常重要,就是可以在一个应用程序只 ...
- Android学习笔记(七):多个Activity和Intent
根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...
最新文章
- 【WebMisCentral WMC】基于Extjs 4.2x的企业级用户授权认证中心系统(SSO+AM+SM),多租户SAAS应用...
- 一个webservice的初级例子
- linux svn强制注释,svn强制提交时添加注释
- mysql blob 字段_MySQL中TEXT与BLOB字段类型的区别
- Android的联通性---USB主机模式(三)
- 2020年 Google 开发者大会可以预约了
- python web生产环境_2020年了,python的web framework sanic 可以考虑生产环境部署了么?...
- python写标准api_用python写api
- SURF源码分析之fasthessian.h和fasthessian.cpp
- PHP中的ZIP压缩与解压
- kali字典WiFi
- 【管理】日报,周报,会议记录模板
- Spring Tool Suite开发环境搭建
- 如何增加mysql字段长度_增加数据库字段长度
- 网络环路导致公司网络瘫痪问题排查
- 《非凡的公主希瑞》(She-Ra Princess of Power)[93集全][数码修复][国英双语][RMVB]
- 北斗GPS系统在车辆管理系统中的运用与北斗GPS车辆管理调度系统平台建设方案硬件设备
- 机器学习常用算法归详细纳整理
- 『已解决』.NET报错:所生成项目的处理器框架“MSIL”与引用“wdapi_dotnet1021”的处理器架构“AMD64”不匹配
- win11中VMware开启虚拟机电脑蓝屏的解决方法
热门文章
- ubuntu开启mysql日志记录
- src漏洞挖掘|一个谎言需要无数谎言来弥补
- ngx_lua模块API说明
- hadoop集群中datanode启动几秒钟自动关闭
- TensorFlow学习笔记(十六)tf.random_normal
- Tensorflow从入门到精通之:Tensorflow基本操作
- JVM调优系列:(二)JVM运行时数据区域
- Python常见十六个错误集合,你知道那些?
- cisco 生成树协议PVST+
- at org.apache.coyote.http11.AbstractOutputBuffer.checkLengthBeforeWrite