对于安卓锁屏中知识点小结

java.lang.Double.parseDouble():

该方法返回了一个新的双初始化为指定字符串表示的值,这样做因为double类有valueof的方法。

本例中用于讲一个字符串转换为数字的方法,如果执行没有触发异常就表示为电话号码。

String.Contains()方法:

该方法用于检查是否包含对应内容,只支持charsequence,即字符序列。
本例中,用于检查坐着的手机号是否包含在短信来源中

监听短信SMS监听:

首先提取intent中的bundle对象,然后使用pdu密钥提取SMS plus数组,每一个pdu都表示一个sms消息,使用SmsMessage的createFromPdu()方法将每一个pdu字节数组转换成为Smsmessage对象,调用该对象的getOriginatingAddress()方法可获取发送方手机号,getMessageBody()方法可以获取短信的内容。

时间判断isflag():

个人认为就是一个判断的指标,类似于if中的判别式

保证SMSserver不被杀死的方法:

service+broadcast

Service:可通过context.startservice(对于本地服务)和context.bindseverice(对于远程服务)来启动。

法一:使用onStartCommand方法,返回START_STICKY

法二:提升service进程优先级

法三:
提升service优先级

进程优先级排序从高到低:

前台进程>可视进程>次要服务进程>后台进程>内容供应节点>空进程

将service放到前台,但是注意onDestroy里需要stopForeground(true)

法四:在onDestroy方法里重启service

法五:设置android:persistent=“true”(不知道我看的对不对,应该没问题)不要乱设置!

法六:通过系统的各种广播监听

法七:通过开启两个app,相互监听。

SharedPreference存储:

1、context类中的getSharedPreferences()方法

有两种模式:MODE_PRIVATE---仅当前应用才可读写

MODE_MULTI_PROGRESS---可允许多个进程读写

2、Activity类中的getPreferences()方法

只能在该activity中使用

3、PreferenceManager类中的getDefultSharedPreferences()方法

静态方法

步骤:
调用SharedPreference对象的edit()方法获取一个SharedPreference.editor对象

向SharedPreference.editor中添加数据,方式对应为 布尔型——putBoolean、字符串——putString()

调用commit()方法将添加的数据提交。

Intent四大属性:

Action、Data、Category、Extras

Action:Action属性的值为一个字符串,它代表了系统中已经定义了一系列常用的动作。通过setAction()方法或在清单文件AndroidManifest.xml中设置。默认为:DEFAULT。
  
Data:Data通常是URI格式定义的操作数据。例如:tel:// 。通过setData()方法设置。
  
Category:Category属性用于指定当前动作(Action)被执行的环境。通过addCategory()方法或在清单文件AndroidManifest.xml中设置。默认为:CATEGORY_DEFAULT。
  
Extras:Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。

(1)在AndroidMainfest.xml 中对每一个Activity都做了说明——intent-filter,intent-filter声明了需要接收怎样的Intent,当发送的Intent和intent-filter中定义的相符合,就会启动相应的Activity;

(2)当有多个Activity符合发送的Intent时,Android系统会列出所有满足Intent的Activity,用户可以通过选择进行相关的操作;

(3)在一个Activity的intent-filter中可以有多个action、多个category、多个data,这样可以有多种组合与Intent进行匹配。注意:如果在一个Activity中有多个Intent进行匹配的时候,建议使用多个intent-filter与Intent进行匹配。猜测:这样应该可以提高Intent的匹配速度。

(4)data属性,这是一个进行反向限制Intent的操作,要求Intent的data必须是intent-filter中声明的数据之一(应为在一个intent-filter中可以设置多个data)。注意:如果要启动目标Activity,但是指定的data数据类型与Activity中data数据类型不匹配,将会造成ActivityNotFoundException异常。

Class.forName()用法及与new区别(没搞透)

从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。 而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载 java API的那个加载器。

new 和Class.forName()有什么区别? 其实上面已经说到一些了,这里来做个总结: 首先,newInstance( )是一个方法,而new是一个关键字; 其次,Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用 new关键字生成对象没有这个限制。 简言之:newInstance(): 弱类型,低效率,只能调用无参构造。new: 强类型,相对高效,能调用任何public构造。Class.forName(“”)返回的是类。Class.forName(“”).newInstance()返回的是object

长短信发送:

public void sendMultipartTextMessage

发送短信的三种方式:

发送信息的三种方法(在android.telephony.SmsManager中定义)

SmsManager.getDefault().sendDataMessage(destinationAddress, scAddress, destinationPort, data, sentIntent, deliveryIntent);

SmsManager.getDefault().sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);

SmsManager.getDefault().sendMultipartTextMessage(destinationAddress, scAddress, parts, sentIntents, deliveryIntents);

Activity中finish() onDestroy() 和System.exit()的区别

Finish():activity内容需要关闭,将其移出栈,但是资源并没有释放,空间依旧是被占用的。

onDestroy():在activity生命周期最后一步,将资源空间回收,也就是与此activity有关的内容全部处理完成。

Exit(0):推出整个应用程序,针对整个app,将整个app全部kill掉。

posted @ 2016-11-02 23:14  miaohj  阅读(309)  评论(0编辑  收藏  举报