Android学习笔记(三)

ContentProvider简单介绍

  ContentProvider是不同应用程序之间进行数据交换的标准API,当一个应用程序须要把自己的数据暴露给其它程序使用时。该应用程序便可通过提供ContentProvider来实现,其它应用程序就可通过ContentResolver来操作ContentProvider暴露的数据。假设某一应用程序通过ContentProvider暴露了自己的数据操作接口,则无论该应用程序是否启动。其它应用程序都能够通过该接口来操作该应用程序的内部数据。包含添加、删除、改动、查询数据。

android:authorities属性

   定义好的ContentProvider类必须在AndroidManifest.xml里声明后才干使用,声明中必须加入授权属性

android:authorities。相当于为该ContentProvider指定域名,Content uri中content://authority/optionalPath/optionalId的authority部分便是android:authorities属性指定的值。

属性值定义的方法为包名+ “.”+ 该ContentProvider的名称。

Service本身存在的两个问题

1. Service不会专门启动一条单独的进程,Service与它所在应用处于同一个进程中。

2. Service不是一条新的线程。因此不应该在Service中直接处理耗时的操作。耗时的操作应该开启一个新的线程来处理。

处理耗时任务的问题

假设就开发这须要在Service模块中处理耗时任务,通常是在Service中另外启动一条新线程来处理,但不能在其它应用程序组件中启动子线程来处理,由于Activity可能会被用户退出、BroadcastReceiver的生命周期非常短。非常有可能出现子线程还没有结束。Activity已经被用户退出,或者BroadcastReceiver已经结束,出现空线程的情况。

IntentService简单介绍

  IntentService可以弥补Service本身的两个缺陷: IntentService会使用队列来管理请求的Intent,每当client代码通过Intent请求启动IntentService时。IntentService会将该Intent增加队列中,然后开启一条新的worker线程来处理该Intent,对于异步的startService()请求。IntentService会按次序依次处理队列中的Intent,该线程保证同一时刻仅仅处理一个Intent。

因为IntentService使用新的worker线程处理Intent请求,因此IntentService不会堵塞主线程,所以IntentService自己便能处理耗时的任务。

静态代码块

   即类中不包括不论什么方法体的静态代码块,其格式一般为static{…}。这样的静态代码块仅仅在类被载入时运行,并且仅仅运行一次。

静态代码块一般用来运行类属性的初始化。

getResources().getStringArray(…)作用

getResources().getStringArray(R.array.setting)是获取应用程序中数组资源的方法。即假设要使用应用程序中定义的数组资源,须要使用getResources().getStringArray(R.array.*),其返回值为一个数组。

TelephonyManager服务类的getXxx()方法举例

  1.TelephonyManager.getDeviceId()                      //获取设备的编号

  2.TelephonyManager.getDeviceSoftwareVersion()           //获取系统平台的版本号

  3.TelephonyManager.getNetworkOperator()                //获取网络运营商代号

  4.TelephonyManager.getNetworkOperatorName()           //获取网络运营商名称

  5.TelephonyManager.getPhoneType()                     //获取手机网络类型

  6.TelephonyManager.getCellLocation()                    //获取设备所在位置

  7.TelephonyManager.getSimCountryIso()                  //获取SIM卡的国别

  8.TelephonyManager.getSimSerialNumber()                //获取SIM卡序列号

  9.TelephonyManager.getSimState()                       //获取SIM卡状态

  返回值的类型都是String类型。

通话状态监听器PhoneStateListener简单介绍

PhoneStateListener是通话状态监听器,定义该监听器时必须实现onCallStateChanged(intstate, String number)方法。通话状态的主要静态常量: int CALL_STATE_IDLE  //空暇状态,没有不论什么活动    int CALL_STATE_OFFHOOK  //摘机状态。至少有个电话活动,该活动或是拨打或是通话,或者是on hold。而且没有电话是ringing or waiting   intCALL_STATE_RINGING //来电状态。电话铃声响起的那段时间或正在通话又来新电,新来电话不得不等待的那段时间。

获取短信管理器的方法

  SmsManager sManager= SmsManager.getDefault();     //由此方法获取应用程序的SmsManager

PendingIntent对象简单介绍

   PendingIntent对象是对Intent的包装,一般通过调用PendingIntent的getActivity()、getService()、getBroadcastReceiver()静态方法来获取PendingIntent对象。与Intent对象不同的是。PendingIntent一般会传给其它应用组件,从而由其它应用程序来运行PendingIntent所包装的Intent。

BroadcastReceiver简单介绍

  BroadcastReceiver属于系统级的监听器,拥有自己的进程,仅仅要存在与之匹配的Intent被广播出来。BroadcastReceiver就能被激发。

当被激发后,会自己主动触发它的onReceive()方法,onReceive()方法运行完毕后。BroadcastReceiver的实例便会被销毁。与Activity组件不同的是,当系统通过Intent启动指定的Activity组件时,假设没有找到合适的Activity组件,会导致程序异常终止。但系统通过Intent激发BroadcastReceiver时,假设找不到合适的BroadcastReceiver组件,应用不会有不论什么问题。此外,不能在onReceive()中运行耗时的操作,能够考虑通过Intent启动一个Service来完毕该操作。但不能使用新线程完毕耗时的操作。由于BroadcastReceiver本身的生命周期非常短,可能出现子线程还没结束,BroadcastReceiver就已经退出了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[tp3.2.1]数据模型 - 简单的模型连接

新建数据库数据库连接功能1.写conf.php/* 数据库设置 */DB_TYPE > , // 数据库类型DB_HOST > , // 服务器地址DB_NAME > , // 数据库名DB_USER > , // 用户名DB_PWD …

Android之解决toolbar里面显示返回按钮图片太大和没有水平居中的问题

1、问题 1、toolbar里面显示返回按钮图片太大 2、返回按钮图片没有水平居中 2、解决办法 1、把drawable里面的图片移动到mipmap-xhdpi里面去,还大了就移动到mipmap-xxxhdpi里面去,这样图片会缩小很多,就不需要再次换图片了。 2、在toolbar…

cake-build -.Net Core 跨平台构建自动化系统。

介绍Cake (C# Make) 是一个带有 C# DSL 的构建自动化系统,用于执行编译代码、复制文件/文件夹、运行单元测试、压缩文件和构建 NuGet 包等操作。地址https://cakebuild.net/docs构建本教程使用Cake Frosting,它允许您将构建编写为标准控制台应用程序作为…

PS实现分幅扫描图片的批量自动拼接

很简单,只需两步搞定: 一、打开工具,如图所示: 二、选择图片,进行拼接: 静待结果!

.NET Nancy 详解(三) Respone 和 ViewEngine

我们在ASP.NET MVC中可以返回各种类型的ActionResult(以下图片来自于园友--待补。。) 在Nancy 中本着简单粗暴的原则,使用方式略有不同。这期我们使用的版本是Nancy的第一个tag version 0.0.2.0。 public MainModule(IRouteCacheProvider routeCacheProvider){Get[&…

Android之修改app名字客户需要升级需要注意的问题

1、问题 客户改了app的名字,在服务端替换了新的apk,然后下次升级更新的之前的apk. 2、总结 1、如果涉及到修改app的桌面名字的定制,如果客户要求从浏览器下载的的apk名字也要修改的话,我们会把这个新的apk放到linux 服务端&…

(转)Akka学习笔记

Akka学习笔记系列文章:  《Akka学习笔记:ACTORS介绍》  《Akka学习笔记:Actor消息传递(1)》  《Akka学习笔记:Actor消息传递(2)》    《Akka学习笔记:日志》  《Akka学习笔记:测试Actors》  …

resque java_php-resque :基于Redis的后台任务系统

为什么使用php-resque?php-resque 是轻量级后台任务系统,基于Redis,功能设计简单,配置灵活。相比MQ系统大而全的MQ系统,这个显得小而美。php-resque 角色划分Job 定义任务,是负责具体的业务逻辑。Queue 队列&#xff…

【.NET 日常开发技巧】一个性能强悍的HttpClient 库

微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码请公众号留言源码即可;源码如下:1// See https://aka.ms/new-console-template for more information2using Flurl;3using Flurl.Http;45Console.WriteLine("Hello, …

javascript中Date对象的初始化方法

为什么80%的码农都做不了架构师?>>> 在前端代码中难免会涉及到时间的操作,如何构造一个Date对象呢?javascript为我们提供如下几种方式: new Date("month dd,yyyy hh:mm:ss");new Date("month dd,yyyy&…

【转】R语言 RStudio快捷键

【转】R语言 RStudio快捷键 链接地址 http://blog.sina.com.cn/s/blog_403aa80a0101ar8q.html 控制台 功能Windows & LinuxMac移动鼠标到控制台Ctrl2Ctrl2控制台清屏CtrlLCommandL移动鼠标至第一行HomeCommandLeft移动鼠标至最后一行EndCommandRight历史记录翻滚Up/DownUp…

贪心算法之哈夫曼编码问题

1、问题 通常的编码方法有固定长度编码和不等长度编码两种。这是一个设计最优编码方案的问 题,目的是使总码长度最短。这个问题利用字符的使用频率来编码,是不等长编码方法,使 得经常使用的字符编码较短,不常使用的字符编码较长。如果采用等长的编码方案,假设所 有字符的编码都…

决心书

决心书 我是来自山西的一只老山羊,我叫杨洋。从大学毕业后,从事教育行业,也回山西老家坐过一段办公室。每天除了发呆一无是处,总觉得自己需要改变着什么。虽然做不到为天地立心,为众生立命。能为自己立命也是好的。所以…

java id主键_JAVA主键ID生成工具类:改自twitter的分布式ID算法snowflake

祝大家新年快乐,有任何问题可与我联系:关于snowflake算法的介绍和原理这里不过多说明了,网上有很多。这里简单描述下SnowflakeUtil的优点:1、做为底层工具使用,可用于数据库主键、订单编号……2、不依赖数据库&#xf…

云上“炼”码兵器 GitHub Codespaces

GitHub 是全球最受欢迎的开发者平台, ⾃从微软收购了 GitHub 后, GitHub 的功能就越来越强⼤,除了原有的代码管理外,也增加了很多硬货,这就包括了集成 CI/CD 的 GitHub Actions ,以及完善的项⽬管理功能&am…

python 中的yum pip

为什么80%的码农都做不了架构师?>>> python 中的yum pip pip 可以管理python中的模块,之于python就像yum之于redhat 转载于:https://my.oschina.net/sskxyz/blog/368099

Hello, AnnsShadow!

Hello! 发现这个神奇的园子快一年了,自己的学习历程磕磕碰碰也过了一年了,想想,这么久了,是时候做些记录做个分享者了。 从一开始的只敢看Blog,到现在自己发表一下自己的所感所想,算是一种成长了…

ArcGIS怎样获取重分类后各类所占的像元个数

【问题描述】如下图所示,给西北地区2007年平均NDVI分等级,求各个等级的面积所占百分比? 解决方法: 刚开始老在如下图所示的Properties界面中进行重分类,虽然能得到分类结果,但是却得不到像元个数,因为是连续的,也不会有属性表生成: 后来发现,工具箱中还有个分类工具…

Linux c之函数手册

Linux c函数手册查阅地址 http://man.chinaunix.net/develop/c&c/linux_c/default.htm

13.ThreadPoolExecutor线程池之submit方法

jdk1.7.0_79 在上一篇《ThreadPoolExecutor线程池原理及其execute方法》中提到了线程池ThreadPoolExecutor的原理以及它的execute方法。本文解析ThreadPoolExecutor#submit。 对于一个任务的执行有时我们不需要它返回结果,但是有我们需要它的返回执行结果。对于线程…