Android studio中的四大核心组件中的学习难点复习
2019-04-08 11:14
417 查看
Activity
在应用中一个activity可以用来表示一个界面,也可表示一个活动的开始,代表activity组件的启动,活动结束则代表一个activity的生命周期的结束。
activity状态 | 表现 |
---|---|
Resumed | 处于栈的最顶端,可视且可互动 |
Paused | 被另一个透明或Dialog样式的activity覆盖时的状态,其状态可视但不可交互 |
Stopped | 当前activity被另一个activity覆盖,失去焦点且不可视。 |
/** * 在onCreate方法之后调用,用于显示揭秘那,但用户不能进行交互 */ @Override protected void onStart() { super.onStart(); System.out.println("MainActivity-onStart"); } /** * 当一个stopped状态的activity被返回时调用,之后再调用onResume */ @Override protected void onRestart() { super.onRestart(); System.out.println("MainActivity-onRestart"); } /** * 在onStart方法后调用,该方法执行完成后,用户可进行交互,当前Activity进入resumeed状态 * 当一个pasued状态的activity被重新返回时,会再次调用,让activity进入运行状态 */ @Override protected void onResume() { super.onResume(); System.out.println("MainActivity-onResume"); } /** * 当其他activity(透明或窗口模式)进入时,该方法会被调用,让当前activity进入pasused状态(暂停状态) * 当前activity可视但不可交互,如果其他更高优先级的app需要内存时,当前activity可能会被销毁(kill) * 当前activity被返回时会调用onResume方法 */ @Override protected void onPause() { super.onPause(); System.out.println("MainActivity-onPause"); } /** * 当其他activity完全覆盖该activity时,会被调用,当前activity进入stopped状态(停止状态) * activity不可见不可交互,如果其他更高优先级的app需要内存时,当前activity可能会被销毁(kill) * 当前activity被返回时会调用onStart方法 */ @Override protected void onStop() { super.onStop(); System.out.println("MainActivity-onStop"); } /** * 当前activity被销毁时调用,通常在该方法中用来释放资源,当前activity销毁 */ @Override protected void onDestroy() { super.onDestroy(); System.out.println("MainActivity-onDestroy"); }
Activity的生命周期图
Activity传递数据
public void sendObjClick(View v){ //要传递的对象 Cat cat =new Cat(); cat.name="皮卡丘"; cat.age=2; cat.type ="英短"; Intent intent =new Intent(this,MainActivityB.class); intent.putExtra("cat",cat); startActivity(intent); } public void sendClick(View v){ //创建一个意图(想干什么)参数:上下文,要跳转的组件的字节码。 Intent intent =new Intent(this,MainActivityB.class); String info =editText_info.getText().toString(); //封装要传递的数据 // Bundle data=new Bundle(); // data.putString("info",info); // intent.putExtra("data",data); intent.putExtra("info",info); intent.putExtra("age",24); //封装email startActivity(intent); //启动新的Activity }
Action
/** * 直接查找法(通过组件名称) * @param v */ public void componentClick(View v){ Intent intent =new Intent(this,MainActivity2.class); // ComponentName componentName =new ComponentName(this,MainActivity2.class); // intent.setComponent(componentName); startActivity(intent); } /** *使用间接法(通过action属性和category属性) * 在Activity的清单文件配置中,必须使用默认的类别 * @param v */ public void actionClick(View v){ Intent intent =new Intent(); intent.setAction("xxq.action.MY_ACTION"); intent.addCategory("xxq.category.MY_CATEGORY"); startActivity(intent); } /** * data属性,一般与action配合使用(此组合是最常见的使用方法) * @param v */ public void dataClick(View v){ Intent intent =new Intent(); // intent.setAction("xxq.action.MY_ACTION"); intent.setAction(Intent.ACTION_VIEW); Uri data = Uri.parse("http://www.baidu.com"); // intent.setData(data); 会使type属性设置为null; // intent.setTypeType); 会使data属性设置为null; //要使用data和Type,必须使用以下方法,匹配对必须两者同时匹配才能通过; intent.setDataAndType(data,"text/html"); startActivity(intent); } public void flagClick(View v){ Intent intent =new Intent(this,MainActivity5.class); //设置activity的启动模式 //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 在新的任务栈中启动activity,如果有,那么就在本任务中执行启动 //FLAG_ACTIVITY_NEW_TASK 相当于singleTask //FLAG_ACTIVITY_CLEAR_TOP 相当于singleTop intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); }
Bind Service
应用程序组件(客户端)通过调用bindService()方法能够绑定服务,然后Android系统会调用服务的onBind()回调方法来返回一个跟服务端交互的IBinder对象。
该绑定是异步的,bindService()立即返回,并且不会给客户端返回IBinder对象。
客户端如需接收IBinder对象就必须创建一个ServiceConnection类的实例,并将其传递给bindService()方法。
注意:只有Activity,Service和内容提供器(content provider)可以绑定服务
/** * 绑定服务: * 通过绑定服务来实现功能的步骤: * 1.客户端通过bindService方法来绑定一个服务对象,如果绑定成功,会回调用ServiceConnection端口方法onServiceConnected * 2.通过Service组件来暴露业务接口 * 3.服务端通过创建一个*。aidl文件来定义一个可以被客户端调用的业务接口 * 一个aidl文件 * (1)不能有修饰符,类似接口的写法 * (2)支持类型:基本数据类型,String,CharSequence,List<String>,Map,自定义类型 * 自定义类型: * 实现一个aidl文件声明该类型; * 在其他aidl文件中使用,必须要使用import * 4.服务端需要一个业务接口的实现类,通常会使用extends Stub类 * 5.通过Service的onBind方法返回被绑定的对象 * 6.客户端如果绑定成功,就可以像调用自己的方法一样的调用远程的业务方法。 * */ public class MyBoundService extends Service { public MyBoundService() { } @Override public void onCreate() { super.onCreate(); } @Override public void onDestroy() { super.onDestroy(); } @Override public boolean onUnbind(Intent intent) { return super.onUnbind(intent); } @Override public IBinder onBind(Intent intent) { return new IMImpl(); } }
相关文章推荐
- Android学习——四大核心组件(Activity)
- 学习笔记之Android四大核心组件详解
- Android四大核心组件之Activity2学习心得
- Android 四大核心组件之Service(1) 学习心得
- Android学习——四大核心组件(Service)
- Android基础学习【历史流程重走】 ----四大组件之Activity
- 安卓四大核心组件之Activity
- Heron —— 核心组件学习
- 安卓四大组件复习----自定义广播(三)
- Android学习--四大组件之 Service(二)
- Androi四大核心组件之BroadcastReceiver
- ZendFramework学习第三章(核心组件—校验器之预定义校验器)
- Android四大组件之Service复习笔记
- Java NIO 核心组件学习笔记
- ZendFramework学习第三章(核心组件—过滤器之创建自定义过滤器)
- Android 四大核心组件之Service
- Android 四大组件学习之Server一
- Android四大组件学习(一)---Activity
- Android开发学习之四大组件
- ZendFramework学习第三章(核心组件—使用配置数据之从XML配置文件中读取数据)