网站建设外包服务,公司注册资金可以取出来吗,wordpress cform,做一手房的网站ContentProvider简单介绍 ContentProvider是不同应用程序之间进行数据交换的标准API#xff0c;当一个应用程序须要把自己的数据暴露给其它程序使用时。该应用程序便可通过提供ContentProvider来实现#xff0c;其它应用程序就可通过ContentResolver来操作ContentProvider暴露… 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就已经退出了。