- 博客(97)
- 资源 (5)
- 收藏
- 关注
原创 Android面试题大全
1、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。 2、sim卡的EF 文件有何作用 sim卡的文件系统有自己规范,主要是为了和手机通讯
2016-04-11 15:21:48 1974
原创 单例模式懒汉式与饿汉式java讲解
单例模式是常用的设计模式之一,实质就是确保一个类只有一个实例对象,分为懒汉式和饿汉式两种。类图如下:一、懒汉式单例模式1.懒汉式单例模式原始版:开始设置实例对象为空,只要对象为空的话就返回一个实例对象。2.懒汉式单例模式优化版(同步方法方式或同步块方式):然而如果一个线程进入之后还没有将实例对象赋值之前,又有一个线程进入,这样就会先后创建两个对象,造成多个线程共同抢
2016-04-06 11:12:01 2032
原创 朴素贝叶斯分类器原理与java实现
朴素贝叶斯分类器是一种常用的分类算法,该算法利用训练数据集合的特征、类别以及测试数据的特征来得到测试数据的类别。下面是该分类器原理中最重要的公式: P(C|F1F2...Fn) = P(F1F2...Fn|C)P(C) / P(F1F2...Fn)在这个公式中,C表示类别,F1,F2,F3...Fn是n个特征,这个公式的意思为:在满足一组特征的条件下分到类别C的概率=在满足类别
2016-03-14 11:39:54 3373 1
原创 使用病毒库检查手机中已经安装的程序
查杀病毒的程序一直是研究的热点,下面我将自己已经写好的一种检查病毒有无的程序整体思路分享给大家。在程序中,将已有的病毒库拷贝到应用程序的数据库存放的位置,开启一个线程,根据扫描的不同状态标记各个安装程序的情况。遍历所有的安装包,提取这些安装包中的MD5值,将这个MD5值作为参数在病毒库中进行查找,如果找到标记该程序为有毒程序,反之,则否。将查询的结果以消息的形式使用handler传递,hand
2016-03-13 21:20:49 747
原创 AES密码算法系列2:AES密码算法设计与实现
在上一页博客中已经详细介绍了AES密码算法,这里我们给出算法的设计与实现的详细步骤。其中C语言版是底层实现,Java语言的两版是调用Java提供的包,代码中有详细的注释,供大家学习交流之用。C语言版:/* * Advanced Encryption Standard * @author Dani Huertas * @email huertas.dani@gmail.com *
2016-03-13 15:43:30 1505
原创 AES密码算法系列1:AES密码算法原理详解
AES密码算法原理详解0 AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代DES成为广泛使用的标准。 根据使用的密码长度,AES最常见的有3种方案,用以适应不同的场景要求,分别是AES-128、AES-192和AES-256。本文主要对AES-128进行介绍,另外两种的思路基本一样,只是轮数会适当增加
2016-03-13 15:35:33 1765
原创 安卓BroadcastReceiver组件使用系列3:使用广播来判断数据网络和无线网络的连接情况
注册广播的两种方式:1.使用Context.registerReceiver() 2.使用在AndroidManifest.xml(清单文件)中注册注册广播的时候在Activity.onResume()中注册,在Activity.onPause()中卸载下面我们来介绍一下它的使用方法。整体思路:在activity中的onCreate方法中声明ConnectivityMana
2016-03-08 15:16:30 678
原创 安卓BroadcastReceiver组件使用系列2:给多个广播接收者发送广播和有序广播的使用
给多个广播接收者发送广播、有序广播的使用在安卓开发中是经常使用的方式,下面我们来介绍一下它的使用方法。整体思路:在xml文件中放置两个Button控件,给这两个Button控件设置点击事件,在第一个点击事件中传递一个数据,设置一个动作并发送广播,在第二个点击事件中传递一个数据,设置一个动作并发送有序广播。新建三个继承BroadcastReceiver的广播接收类,用于接收传递的数据。在第二个B
2016-03-08 15:03:16 2645
原创 安卓BroadcastReceiver组件使用系列1:普通广播的发送和接收
广播接收者BroadcastReceiver是安卓开发中的四大组件之一,下面我们来介绍一个普通广播的使用。广播的生命周期:onReceive方法执行开始到执行结束注意:在广播里不能有对话框,也不能绑定service,也不能执行耗时操作。它是接收到一个信息之后来提醒用户。整体思路:在xml'文件中放置一个Button控件,在这个Button的点击事件中,定义一个意图发送广播。定义一个MyRe
2016-03-08 14:47:26 636
原创 安卓Service组件使用系列6:使用AIDL完成两个进程间的通信
Android Interface Definition Language (AIDL) 安卓接口定义语言,定义这样的接口,必须以.aidl作为后綴名。使用这样的接口定义,用于两个进程间的通信(两个apk之间需要一个通信功能时用到)。这时需要定义.aidl文件。下面我们来看一下它的使用方法。整体思路:创建一个安卓工程android_service_aidl_server,作为服务器端,定义一
2016-03-08 13:39:11 739
原创 安卓Service组件使用系列5:service和activity之间的数据交互
service和activity之间的数据交互 (从activity传数据给service,又从service传数据给activity),这样的使用在android开发中是比较有深度的使用方式。下面我们就来介绍一下它的使用。整体思路:在xml文件中放置一个TextView控件,三个Button控件,定义一个MyService类,继承Service,在onBind方法中返回LocalBinder
2016-03-08 13:14:13 2505
原创 安卓Service组件使用系列4:绑定service并调用service中的方法返回结果
绑定式服务:适合客户端和服务器端数据接口的交互。下面我们以绑定service并调用service中的方法返回结果为背景介绍它的使用方法。整体思路:在xml文件中放置一个TextView控件、两个Button控件,在MainActivity中实例化一个ServiceConnection类,在这个类中重写onServiceDisconnected和onServiceConnected方法,在onS
2016-03-08 11:41:14 1093
原创 安卓Service组件使用系列3:使用IntentService下载网络图片
使用IntentService的特点:1.不需要开启线程2.不需要关闭服务,自己会关闭3.使用单线程下载数据 (不需要完成线程的编写,直接访问网络就可以获取图片)因为以上两点都在它的类源码中封装好了。在面我们看一下它的使用方法。整体思路:在xml文件中放置一个Button控件,在这个Button点击事件中开启Service。定义一个DownLoadSer
2016-03-08 11:00:08 919
原创 安卓Service组件使用系列2:使用Service下载网络图片并存储于sdCard卡上
使用启动式Service的方式可以处理网络的数据交互、音乐播放、执行IO操作(这些操作都是来自后台的)。下面我们以下载网络图片并存储于sdCard卡为实际应用背景来说明它的使用方法。整体思路:在xml文件中放置一个Button控件,在这个Button点击事件中启动Service。定义一个DownLoadService类继承Service,并在这个类中重写onCreate()、onStartCo
2016-03-08 10:41:08 1248
原创 安卓Service组件使用系列1:启动式Service的生命周期
Service是四大组件中最重要的组件,在后台运行,不给我们提供UI的界面,某些组件可以绑定到服务上,执行进程间的通信,可以处理网络的数据交互、音乐播放、执行IO操作(这些操作都是来自后台的)。服务有两种:启动式服务、绑定式服务。启动式服务:被其他的组件(比如service)启动,操作完了,调用某些方法停止。生命周期:onCreate()-->onStartCommand()-->on
2016-03-08 10:07:28 518
原创 安卓多线程编程系列7:使用Looper的不同方式(子线程中实例化Handler方式)
在Activity主线程中实例化Handler,不需要定义Looper,因为主线程中有一个默认的Looper对象。而在子线程中实例化Handler,必须要定义Looper循环消息队列和消息队列循环结束。下面我们来一起看一下在子线程中实例化Handler'方式。整体思路:在xml文件中放置一个Button控件和一个TextView控件,在activity中定义一个MyThread类实现Runna
2016-03-04 16:50:58 1751
原创 安卓多线程编程系列6:使用Looper的不同方式(主线程中实例化Handler方式)
在Activity主线程中实例化Handler,不需要定义Looper,因为主线程中有一个默认的Looper对象。下面我们来一起看一下这种使用方法。整体思路:在xml文件中放置一个Button控件和TextView控件,在activity中,定义一个MyThread类实现Runnable接口,在这个类中重写run方法,在这个方法中定义一个message,赋值数据,并使用handler发送,定义
2016-03-04 16:40:07 536
原创 安卓多线程编程系列5:使用message的几种不同方式(不同的构造方法和使用方式)续
message的使用方式多种多样,为了让读者可以更加全面的了解它的使用方法,我们对上一篇中的内容进行一下补充说明。另外,发送message的方式有两种:send和post整体思路:在xml'文件中放置两个Button控件,在activity的onCreate的方法中的button点击事件中,开启一个新的线程,在run方法中使用不同message的定义形式以及数据赋值形式,并发送数据,在定义的H
2016-03-04 16:23:06 433
原创 安卓多线程编程系列4:使用message的几种不同方式(不同的构造方法和使用方式)
一个handler对应一个MessageQueue(消息队列),message是消息队列中数据的载体Message(消息):是用来携带数据的MessageQueue(消息队列):是用来存储消息的handler:是用来发送和接收消息的Looper:让消息队列一直进行循环的(管理整个这一摊事),汉语是“环”的意思 是一个死循环:Looper会一直将handler中的message
2016-03-04 16:10:26 663
原创 安卓多线程编程系列3:使用handler和message下载网络图片
使用handler和message进行网络操作是多线程编程经常使用的形式,下面我们来一起看一下它的使用方法。整体思路:触发一个事件,在这个事件中开启一个线程,在这个线程中定义消息,在消息中携带数据,通过handler发送过去,在handler中的handleMessage中去处理消息,获取数据。具体而言,在xml文件中放置一个Button控件和一个ImageView控件,在activity中,
2016-03-04 15:52:46 736
原创 安卓多线程编程系列2:异步任务的使用之使用异步任务带有进度的横向滚动条下载网络图片
异步任务是多线程编程中经常使用的一种方式,这里我们介绍一下使用异步任务带有进度的下载网络图片的使用方法。整体思路:在xml文件中放置一个Button控件和一个ImageView控件,定义一个继承AsyncTask类的MyTask类,在这个类中重写onPreExecute、onProgressUpdate、doInBackground、onPostExecute这四个方法,分别用于表示任务执行之
2016-03-04 15:18:57 449
原创 安卓多线程编程系列1:异步任务的使用之使用异步任务圆圈滚动条下载网络图片
线程在android开发中非常重要,很大程度上决定android app的性能。不会阻碍主线程的操作,并且会把结果发布在主线程上。在android3.0版本以上,不允许主线程直接访问网络,为了让UI在展示的过程中比较流畅。需要开启新的子线程去完成下载等耗时任务的操作,并把下载结果更新到UI上。AsyncTask(异步任务)是一个线程框架,封装了Thread和Handler,异步任务用于短时间的耗时
2016-03-04 15:02:25 637
原创 安卓LoaderManager异步加载数据库
在UI的主线程中异步加载数据库,使得页面比较流畅,以防止查询数据库的记录比较多或者提取数据库记录使用的时间太长会操作UI主线程的阻塞,从而造成相应异常。Loader不能用于增删改,只能用于数据库的查询操作,可以解决阻塞UI主线程的问题。整体思路:创建一个继承SQLiteOpenHelper的DBHelper类,在·这个类中声明一个数据库名称和版本号码,在onCreate方法中创建数据库表并执行
2016-03-01 11:49:09 819
原创 安卓通知的使用系列7:对话框通知的使用之日期对话框、时间对话框
日期对话框和时间对话框是android开发中使用比较少的一种对话框显示方式,这里我们也介绍它们的使用方式。整体思路:在xml文件中定义两个button控件,并在activity中设置它们的点击事件,定义一个Calendar类,初始化年、月、日、小时、分钟,在第一个点击事件中,定义一个DatePickerDialog对象,显示日期对话框并定义它的选择日期的触发事件,在第二个点击事件中,定义一个T
2016-02-29 22:31:58 635
原创 安卓通知的使用系列6:对话框通知的使用之自定义对话框
自定义对话框是使用对话框的一种高级形式,下面我们来介绍一下它的使用方式。整体思路:首先定义一个custom_dialog.xml文件,在这个文件中放置几个控件,作为自定义的对话框的界面,创建一个CustomDialog类,在这个类中定义它的构造方法和show方法,在show方法中绑定custom_dialog.xm文件,设置这个xml文件中控件的属性,并显示这个自定义对话框。custom_
2016-02-29 22:21:24 444
原创 安卓通知的使用系列5:对话框通知的使用之滚动条对话框(圆圈和条形两种形式)
滚动条对话框分为圆圈和横条两种形式,通常用于网络延迟等操作,下面我们来介绍一下这种使用方式。整体思路:在xml文件中定义两个button控件,分别设置它的点击事件,在这两个点击事件中实例化ProgressDialog对象,设置它的属性和显示方式并显示。MainActivity .java文件:button.setOnClickListener(new View.OnClickLis
2016-02-29 22:10:48 962
原创 安卓通知的使用系列4:对话框通知的使用之列表对话框、单选列表对话框、多选列表对话框
列表对话框是对话框的一种常见形式,在android开发中使用比较普遍,下面我们来介绍一个它的使用方式。整体思路:在xml文件中定义三个button控件,并分别设置它们的点击事件,在第一个点击事件中实例化一个AlertDialog.Builder对象,并设置每一个item的点击事件,在第二个和第三个点击事件中分别实例化一个AlertDialog.Builder对象,并设置单选和多选item的点击
2016-02-29 21:47:40 410
原创 安卓通知的使用系列3:对话框通知的使用之警告对话框
对话框在android开发中有这样几种形式:警告对话框、列表对话框、单选列表对话框、多选列表对话框、滚动条对话框(圆圈和条形两种形式)、自定义对话框、日期对话框、时间对话框。下面我们介绍警告对话框的使用方式。整体思路:在xml文件中定义一个button控件,并设置它的点击事件,在这个点击事件中定义一个AlertDialog.Builder 对象,设置它的属性、显示对话框并设置它的三个点击按钮的
2016-02-29 21:39:31 611
原创 安卓通知的使用系列2:状态栏通知和自定义状态栏通知通知
状态栏通知是android开发中常见的一种通知形式,下面我们来介绍一下它的使用方法。整体思路:在xml文件中放置两个button控件,分别设置它们的点击事件,声明NotificationManager对象和Notification.Builder对象,在onCreate方法中实例化这两个对象,在第一个点击事件中设置通知的各个属性并发送通知;在第二个点击事件中绑定一个自定义的xml'文件并发送通
2016-02-29 21:27:40 540
原创 安卓通知的使用系列1:土司(Toast)通知和自定义土司(Toast)通知
android中有三种通知方式:土司通知、状态栏通知、对话框通知。这里我们介绍土司通知以及自定义土司通知的使用。整体思路:在xml文件中定义两个button控件,并分别设置它的点击事件,在第一个点击事件中定义Toast对象,设置它的位置并显示。在第二个点击事件中绑定一个自己编写的xml文件,设置该xml文件中控件的属性,设置它的位置并显示。activity_main.xml文件:
2016-02-29 21:16:29 510
原创 安卓菜单的使用系列5:显示弹出菜单
显示弹出菜单是常用的一种显示菜单的方法,弹出的方向如果上面有空间的话在上面弹出,否则在下面弹出。下面我们来看一下它的使用方法。整体思路:在xml文件中定义一个button控件,在MainActivity中定义一个点击事件,在这个点击事件中定义一个弹出菜单,并指定弹出菜单的xml文件,定义一个点击菜单的匿名内部类,并在这个类中处理点击的弹出菜单的操作。menu.xml文件: <
2016-02-29 19:38:57 715
原创 安卓菜单的使用系列4:使用ActionMode显示菜单
安卓中高版本提示使用菜单的规则:使用ActionMode显示菜单,下面我们来一起看一下这种使用方式整体思路:在xml文件中定义一个button,并在MainActivity中定义它的点击事件,在MainActivity中声明一个ActionMode对象,定义一个匿名内部类ActionMode.Callback,配合ActionMode的使用,用于长按按钮显示菜单的功能,在button点击事件中
2016-02-29 19:27:57 1399
原创 安卓菜单的使用系列3:显示上下文菜单
显示上下文菜单是常用的显示菜单的方式之一,通常用于长按view控件(listview和girdview比较常见)显示菜单的情况。整体思路:首先在main.xml文件中定义一个菜单,其中包括几个可供选择的item,在MainActivity中定义一个getData方法,用于生成一个List的数据,定义一个listivew,将数据绑定到listview,重写这个onCreateContextMen
2016-02-29 19:14:25 603
原创 安卓菜单的使用系列2:使用xml文件显示菜单
使用xml文件显示菜单是常用一种菜单显示方式,下面我们来介绍一下它的使用。整体思路:在res的menu目录的main.xml中,用menu和item嵌套的方式定义菜单,在activity中的onMenuItemSelected方法中定义点击菜单所执行的操作。其中有一个操作会跳转到另一个activity,这里需要再清单文件AndroidManifest.xml文件中注册这个activity,这个
2016-02-29 18:48:07 505
原创 安卓菜单的使用系列1:使用java代码显示菜单
菜单的显示方法有以下几种:使用java代码显示普通菜单、使用xml文件显示普通菜单、显示上下文菜单、使用ActionMode显示菜单、显示弹出菜单。这里我们首先介绍一下使用java代码显示普通菜单的方式。整体思路:在MainAcitivity的onCreateOptionsMenu方法中,添加3个菜单,分别指定它的图标、标题、快捷键等,在onOptionsItemSelected方法中,设置选
2016-02-29 16:12:22 1421
原创 安卓存储数据和文件系列4:内容提供者(Content Provider)方式
内容提供者(Content Provider)是android的四大组件之一,重要性可想而知,一个进程的数据可以被另外一个进程访问(在不同的apk之间可以访问),内容提供者可以跨应用,数据库跨应用的使用场景:一个应用中提供数据给其他应用;允许用户从一个应用中拷贝数据到另一个应用;在整个框架中提供一种自定义的查询建议。如果只在一个应用中使用数据的话使用SQLite,不需要使用Content Prov
2016-02-29 15:42:14 559
原创 安卓存储数据和文件系列3:SQLite数据库方式
在android手机中使用SQLite数据库方式进行数据的存储,是一种常见的使用方式,可以存放文件,是以文件或内容的形式保存在android手机上的,访问的时候不能跨应用。其中对数据库进行增删改查有两种方式,一种是sql语句的方法,一种是使用系统自带的辅助方式,这两种方式达到的效果的相同的,因个人的喜好进行选择。整体思路:首先创建一个继承SQLiteOpenHelper的DbOpenHelpe
2016-02-29 14:32:16 1156
原创 安卓存储数据和文件系列2:共享参数(sharedpreferences)方式
下面我们来介绍在android手机中存储数据和文件的第二种方式:共享参数(sharedpreferences)方式。这种方式是读写键值对(key-value),适合存放一些信息量比较少的内容(基本类型变量)。整体思路:新建一个MySharedpreference类,在这个类中定义一个saveMessage方法,将两个字符串存放于存储介质中,并返回是否存储成功,在这个类中定义一个getMessa
2016-02-29 14:00:52 699
原创 安卓存储数据和文件系列1:读写sdCard方式
在android手机存储数据和文件的方式分为五种:1.文件存储(sd卡中)、2.采用共享参数(sharedpreferences)的方式存储、3.SQLite数据库存储、4.使用内容提供者(Content Provider)存储、5.存放在网络的服务器端。读写sdCard卡是常见的一种操作方式。下面我们来介绍一个这种方式的使用。整体思路:定义一个FileService类,在这个类中定义
2016-02-29 11:55:09 842
原创 android两个含有图片的TextView控件如何并列对称水平摆放
android开发中,经常会遇到两个含有图片的TextView控件如何并列对称水平摆放的问题,这样的问题没有网上的资料可以参考,甚至连问题都不好描述清楚,下面我们来看一下这样的效果是如何实现的。定义一个水平的线性布局,在这个水平的线性布局中定义两个竖直的线性布局,每个权重都为1并且填充父控件,然后在这两个竖直的线性布局中分别添加TextView控件,一个使用属性靠左,一个使用属性靠右。
2015-10-19 15:53:08 4145
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人