首页 > 其他分享 >Activity的一些知识

Activity的一些知识

时间:2023-03-08 22:11:32浏览次数:26  
标签:Activity 知识 iv intent new 一些 data Intent

今天也是蛮生气的,本来写了一大篇幅的笔记,结果保存草稿完之后博客园崩了一下,全没了,算了,重新写一份吧

首先是关于AndroidManifest.xml的一些介绍

 

 

每个活动对应一个标签,这里注意了,我可以给多个活动设置开机自启动的过滤器,只不过会按照从上往下的顺序进行执行。当声明了两个或者以上的自启动的话,就会生成多个app图标

这里的action的name用来表示系统动作或者是自定义的活动的名字,作为唯一标识。

category标签的name属性,DEFAULT代表默认启动时不会在手机的主页面创建一个图标,而LAUNCHER会生成一个图标
其次label属性可以改名字,icon属性可以改图标,关于矢量图和位图这块的内容需要再进一步学习。设置多个自启动标志的好处是可以方便我们进行测试修改。

其次是有关Intent的用法,之前只知道一个startActivity方法,也就是直接跳转执行,显示的执行

今天看到了一个隐式的用法,可以用以下几种来执行

Intent intent = new Intent();
intent.setAction();
intent.addCategory();
上面的这种,里面传的参数应该和xml配置文件name属性名一致,这里action既可以写在构造方法里面也可以单独写出来

 

 

 Intent intent = new Intent();
        intent.setClassName("com.android.chrome","com.google.android.apps.chrome.Main");
        intent.setPackage();
        intent.setClassName();
        ComponentName componentName = new ComponentName("com.android.chrome","com.google.android.apps.chrome.Main");
     intent.setComponentName(componentName); startActivity(intent);

这里的package和className是诸如浏览器短信之类的类名和包名,隐式意图多用于应用之间的跳转,而显示意图用于应用内部的跳转

后来看了一点有关adb指令相关的东西,首先是把SDK里面的设置环境变量,然后就能使用了

其次下载了grep过滤的一个控件,用来在控制台过滤一部分日志信息,通过shell指令还能完成一些类似于linux的操作。这里我也没学多少,放个网站吧。

https://notes.sunofbeach.net/pages/f5a5ed/

其次通过Intent传递数据,基本数据类型用putExtra(String,Object)即可

自定义类型的话需要实现序列化接口或者使用谷歌的Parcelable接口,然后也是通过putExtra的方法传参。

 

 

 

 再来说一下如何通过Intent模拟短信和拨打号码,拨打号码的代码如下所示:

       Intent intent = new Intent();
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)== PackageManager.PERMISSION_GRANTED) {
            intent.setAction(Intent.ACTION_CALL);//有权限则直接ACTION_CALL
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);
        }else{
            ActivityCompat.requestPermissions(this,new String []{Manifest.permission.CALL_PHONE},1);//无权限则询问开启权限
            intent.setAction(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);
        }

这里需要在xml里面写上权限,在6.0之后都是动态获取权限了,也就是上面的代码所示

<uses-permission android:name="android.permission.CALL_PHONE" />

其次要说明uri这个对象的tel:这个是前缀,必须要这么写,在xml里面的表示就是

<data android:scheme="tel"/>data标签也是写在intent-filter标签里面的,data标签的引用使得隐式意图多了一个限制的条件,也可以通过

intent.setData("uri.parse("tel:10086") 和intent.getData()来获取到uri的内容

模拟短信同理,这里就之间放代码了。

 

 

 

 

 

 

 

 

 然后简单说一下intent来实现数据的回传

首先需要startActivityForResult(intent,int 这里第二个参数是请求码,用来执行onActivityResult方法用的)传一个intent ,在另一个Activity中获取到intent内容之后,再new一个intent 

最后setResult("第一个参数是响应码“,intent); finish();

后来通过intent调用系统相机并返回至页面,用到位图和数据回传,具体代码如下:

  iv_show = findViewById(R.id.iv_show);
        iv_take = findViewById(R.id.iv_take);
        iv_take.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction("android.media.action.IMAGE_CAPTURE");
                intent.addCategory(Intent.CATEGORY_DEFAULT);
                startActivityForResult(intent,1);
            }
        });
   @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {

        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==1&&resultCode== Activity.RESULT_OK&&data!=null){

            Bitmap resultMap = data.getParcelableExtra("data");
            iv_show.setImageBitmap(resultMap);

        }else if(requestCode==1&&resultCode==Activity.RESULT_CANCELED){
            Toast.makeText(this, "您取消了拍照", Toast.LENGTH_SHORT).show();
        }
    }

 

最后了解了一下Activity的生命周期,之前我只知道onCreate onStart onResume onPause onStop onDestory的执行流程

没想到我们也可以在这六个方法里面执行一些逻辑代码,对于onCreate和onDestory来说,他们是相对了,这里举个小例子,如果我们填写一个数据,然后再次打开的时候还想看到之前填写的数据,我们可以在onDestory方法里面通过共享参数来持久化保存我们的数据,当再次onCreate的时候,先判断,如果不为null,就把共享参数的数据回传给EditText等等。

onStart和onStop方法是相对的。这里可以拿看电影的时候突然来了电话作为例子,来了电话就会执行onStop方法,我们可以在这个方法里面书写让电影暂停播放的代码

然后打完电话之后接着执行onStart方法,再执行其他的操作。

onStart方法执行完之后其实就可以看到页面了,onResume方法在onStart的基础上可以获取焦点了。

标签:Activity,知识,iv,intent,new,一些,data,Intent
From: https://www.cnblogs.com/laohei114514/p/17196461.html

相关文章

  • LabVIEW|知识点:设计模式
    1、简单设计模式设计:需求-----方案架构1)简单VI模式:通常无需用户执行指定启示或停止工作。2、状态机1)表示状态的量(枚举/字符串)2)条件结构3)移位寄存器标准设计:1、使用......
  • 关于逆序对的一些整理
    1.求逆序对的方法:树状数组,O(nlog)的复杂度 树状数组功能:用log的复杂度求出一个数组里面所有大于某一个数字的和,即sum=a1+a2+。。。。+an,其中a1。。an全都小于目标值x做法......
  • 项目管理十大知识领域及五大过程组
    项目管理十大知识领域项目管理最本质的内容就是整合管理,项目的范围、时间、成本、质量、人力资源、沟通、风险、采购与干系人管理等,都是为了最终实现项目的整合管理。这十......
  • (转)Golang中time包用法及一些注意事项
    原文:https://blog.csdn.net/wade3015/article/details/109328485在我们日常软件开发过程中,经常会用到与时间相关的各种业务需求,下面来介绍golang中有关时间的一些基本用......
  • CH582 CH583 CH32V208 CH579 (BLE & ETH)知识分享目录清单
    功耗测试CH32V208系列单片机的低功耗测试(附部分代码供参考)CH582开启睡眠模式下低功耗测试 BLEBLE连接失败错误码原因DisconnectReason:xx总结 以太网CH32V20......
  • 小程序的基础知识
    小程序和普通的网页开发有什么不同?1.网页的运行环境是浏览器,而小程序的运行环境在微信中2.小程序不能调用BOM和DOM的API,他有自己的API3.开发方式不同,网页开发是浏览器+......
  • 知识点笔记
    CopyOnWriteArrayList的底层原理是怎样的?1. ⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的,在向CopyOnWriteArrayList添加元素时,会复制⼀个新的数组,写操作在新数组......
  • Springboot基础知识(20)- spring-boot-starter-web | 基于 Gradle 的 Springboot Web 项
    SpringBoot是在Spring的基础上创建一款开源框架,它提供了spring-boot-starter-web(Web启动器)来为Web开发予以支持。spring-boot-starter-web为我们提供了嵌入的Se......
  • 关于 Spartacus 新的交付方式 RBSC 和用到的一些工具
    JFrog是一家软件公司,提供了一系列的工具和技术,帮助开发者和组织更高效地管理软件开发、交付和部署的整个生命周期。JFrog的产品主要包括Artifactory、Xray、Pipelines、Dist......
  • antdesign-vue 遇到的一些问题
     问题:点击展开没反应 解决办法::expanded-row-keys.sync="expandedRowKeys"去掉即可......