Activity分析

    xiaoxiao2021-03-25  111

    1. //打开浏览器 Intent intent=new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(“http://www.baidu.com“)); startActivity(intent); //打开系统相册 Intent intent=new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT);//打开系统图册 intent.setType(“image/*”);//标识图片类型 startActivity(intent); // 发送短信 Intent intent=new Intent(); intent.setAction(Intent.ACTION_SEND);//打开短信 intent.setType(“text/plain”);//短信类型为文本 intent.putExtra(Intent.EXTRA_TEXT,”kdkdkdkd”); startActivity(intent); //打开拨打电话界面 Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(“tel:1008611”)); startActivity(intent); 2.Category:用于指定当前action执行的环境 3.横竖屏切换时生命周期是当前activity走的整个生命周期(从onCreate()到onDestroy()就是将这个activity先销毁掉在创建activity) 4.横竖屏切换用到一个重要的方法onSaveInstanceState()保存一些重要的信息 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_intent__test); if (savedInstanceState != null) { Log.e(“gyx”,savedInstanceState.getString(“value”)); } } //activity销毁的时候将一些信息保存到这个方法 在onCreate()中判断该Bundle非空 如果非空就要从这个bundle拿到值 @Override//这种情况下要用到一个参数的 两个参数会出现问题 protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(“value”,”addd”); } 5.生命周期简单用法 private int pos;//用来保存播放的位置 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); player=MediaPlayer.create(this,R.raw.h); player.start();//开始的时候要进行播放否则没有声音 } @Override 界面可以获取到焦点 protected void onResume() { super.onResume(); if (pos != 0) {//判断一下是第一次播放还是已经开始播放了 如果是已经播放过了 界面再次获取焦点的时候播放的位置是上次记录的位置 避免重新播放 player.seekTo(pos); player.start(); } } @Override protected void onPause() { super.onPause(); if (player.isPlaying()) {//如果正在播放 则暂停播放 并将播放位置记录下 player.pause(); pos=player.getCurrentPosition(); } } @Override protected void onDestroy() { super.onDestroy(); if (player != null) {//在销毁的时候 播放器的资源释放掉 然后播放器对象要置空 player.release(); player=null; } } } 7.A Activity切换到B Activity 声明周期执行方法 首先是A显示的状态(onCreate()->onStart()->onResume())然后A Activity切换到B Activity A Activity执行onPause()暂停 之后执行的是B Activity的创建过程(而不是执行A Activity的创建过程的原因是有可能因为原因造成B Activity创建不成功 如果A Activity执行销毁操作导致界面黑屏 所有 A Activity打开B Activity执行的生命周期是 A Activity创建 -》onPause B Activity创建 A Activity的销毁) 8.Bundle之间传递的数据 过大 有可能导致事件无法执行 小于0.5兆大小的数据 过大传递不过去 传递图片也不要太大 9.activity启动模式 //如果activity启动模式为singleTop模式 如果栈顶存在就会调用onNewIntent() 而不会在创建activity实例 //如果activity启动模式为singleTask模式 如果任务栈中存在该activity 会调用onNewIntent() 而且会把在他前面的所有activity实例都销毁 而他显示在栈顶(挡我者死) //如果activity启动模式为singleInstance模式 不会再原有的任务栈中 而是新创建一个任务栈来管理该activity 如果该activity再次启动自己的话 则会调用onNewIntent()方法 而不会重新创建实例 在该activity启动其他activity的时候则新创建的activity不会在该任务栈中创建而是在其他任务栈中创建。

    转载请注明原文地址: https://ju.6miu.com/read-18438.html

    最新回复(0)