获取系统时间:
方法 1:
- import java.text.SimpleDateFormat;
- import java.util.Date;
- SimpleDateFormat formatter = new SimpleDateFormat ("yyyy年MM月dd日 HH:mm:ss");
- Date curDate = new Date(System.currentTimeMillis());
- 获取时间:
- String newTime = formatter.format(curDate);
方法 2:
记录方法运行了多少时间:
- import java.util.Calendar;
- private Calendar mCalendar;
- //获取时间
- private String Ctime() {
- mCalendar = Calendar.getInstance();
- long time = System.currentTimeMillis();
- mCalendar.setTimeInMillis(time);
- //判断上下午
- int timestate = mCalendar.get(Calendar.AM_PM);
- String am_pm = (timestate == 0) ? "AM" : "PM";
- //0是1月
- int month = mCalendar.get(Calendar.MONTH) + 1;
- return mCalendar.get(Calendar.YEAR) + "年" + month + "月" + mCalendar.get(Calendar.DAY_OF_MONTH) + "日"
- + " " + am_pm + " " +
- mCalendar.get(Calendar.HOUR) + ":" + mCalendar.get(Calendar.MINUTE) + ":" + mCalendar.get(Calendar.SECOND);
- }
- //开始时添加
- long a = System.currentTimeMillis();
- //结束时添加
- Log.e("dotime", "time is =" + (System.currentTimeMillis() - a) / 1000f + " 秒 ");
用 adb shell 查看数据库:
打开控制台,
1.adb shell
2.cd /data/data / 包名 / databases
包名是在 AndroidManifest.xml 里面,package 后面的内容
3. 这样就是成功了,然后在 # 后面输入 ls
4. 下面的 myClass.db 就是要打开的数据库,输入 sqlite3 myClass.db 用 sqlite3 打开目标数据库
5. 直接输入 sql 语句即可,例如 select * from person;
OSI 七层网络模型 (从下往上):
物理层:为设备之间的数据通信提供传输媒体以及互连设备,为数据传输提供可靠的环境。单位是:bit 比特。
数据链路层:数据通道,主要功能是如何在不可靠的物理线路上进行数据的可靠传递,改层作用包括:物理地址寻址,数据的成帧,流量控制,数据检错以及重发等!另外这个数据链路指的是:物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两过程。单位是:帧。
网络层:主要功能是把网络地址翻译成对应的物理地址,并决定如何把数据从发送方路由到接收方。该层的单位为:数据包。IP 协议就在这一层。
传输层:向上面的应用层提供通信服务,面向通信部分的最高层,同时也是用户功能中的最低层。接收会话层数据,在必要时将数据进行分割,并将这些数据交给网络层,并且保证这些数据段有效的到达对端!所以这层的单位是:数据段。这层有两个很重要的协议就是:TCP 传输控制协议和 UDP 传输控制协议。
会话层:负责在网络中的两节点之间建立、维持和终止通信。建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送,即不同机器上的用户之间会话的建立及管理。
表示层:对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是 "处理用户信息的表示问题,如编码、数据格式转换和加密解密,压缩解压缩" 等。
应用层:OSI 参考模型的最高层,为用户的应用程序提供网络服务。它在其他 6 层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。
OSI 是一个理想模型,一般的网络系统只涉及其中几层,在七层的模型中,每层都提供了一个功能:
下面 4 层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;
第 4 层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;
上 3 层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主;
TCP/IP 四层模型:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP 和 UDP 给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
网络连接层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
主机到网络层:对实际的网络媒体的管理,定义如何使用实际网络(如 Ethernet、Serial Line 等)来传送数据。
Activity 的活动状态:
运行状态,暂停状态,停止状态,销毁状态
Activity 的生命周期:onCreat(),onDestroy(),onStart(),onPause(),onResume(),onStop(),onRestart()
Activity 的启动模式:
1.standard:默认启动模式,在此模式下,每当启动一个 Activity 时(不管回退栈中是否有次 Activity),都会把此 Activity 加入到回退栈中,并置于栈顶,也就是说每次启动一个 Activity 就会创建该活动的一个新的实例。
2.singleTop:栈顶唯一,在此模式下,当启动的 Activity 已经在回退栈的栈顶的时候,就不会再次创建新的活动实例,而是直接使用此 Activity。但是如果此活动没有在栈顶,就会再次创建一个新的实例。此方法可以很好的解决重复创建栈顶活动的问题。
3.singleTask:栈内唯一,在此模式下,每当启动一个 Activity 时,系统首先会在回退栈中检查是否存在该 Activity 的实例,如果发现存在,则直接使用该实例,否则将创建一个新的实例。此方法可以很好的解决在同一个栈内重复创建相同活动的问题。
4.singleInstance:指定为此模式的活动在启动时会创建一个新的回退栈来管理此活动(如果在 singleTask 模式下指定了不同的 taskAffinity,也会启动一个新的回退栈)。
注意,在使用 startActivityForResult() 的时候,只能指定为默认模式,否则会直接调用 onActivityResult() 并返回一个 REUKT_CANCELED。
完全退出 APP:
1. 创建一个活动管理器
- public class ActivityCollector {
- public static List<Activity> activities = new ArrayList<>();
- public static void addActivity(Activity activity) {
- activities.add(activity);
- }
- public static void removeActivity(Activity activity) {
- activities.remove(activity);
- }
- public static void finishAll() {
- for (Activity activity : activities) {
- if (!activity.isFinishing()) {
- activity.finish();
- }
- }
- }
- }
2. 在 BaseActivity 的 onCreat() 方法中添加 addActivity() 方法
- ActivityCollector.addActivity(this);
3.
在 BaseActivity 的 onDestroy() 方法中添加 removeActivity() 方法
- ActivityCollector.removeActivity(this);
4. 在需要结束 APP 的地方添加 finishAll() 方法
- ActivityCollector.finishAll();
android 的限定符
TextUtils 的一些方法:
- equals(CharSequence a,CharSequence
- b)
判断 a 和 b 是否相等,相等返回 true
getChars
- (CharSequences,
- int start, int end, char[] dest, int destoff)
- 按要求获取字符
- getOffsetAfter(CharSequences
- text, int offset)
- 获取offset后的字符长度
- getoffsetBefore(CharSequences
- text, int offset)
- 获取offset前的字符长度
- 获取反向序列
- getTrimmedLength(CharSequence
- s)
- 获取去掉字符序列头尾空格后的长度,和.trim()的作用相同
- htmlEncode(String
- s)
- 把字符S进行HTML编码,并返回编码后的字符串
- indexOf(CharSequence
- s, char ch)
- 返回字符ch在该字符序列s中第一次出现的位置
- indexOf(CharSequence
- s, char ch, int start)
- 返回在字符序列s中指定的位置start开始查找字符ch出现第一次的位置
- indexOf(CharSequence
- s, char ch, int start, int end)
- 返回在字符序列s中指定的一段字符序列(以start开始,end结尾)中字符ch出现的第一次的位置
- indexOf(CharSequence
- s,CharSequence needle)
- 返回指定的字符序列needle在字符序列s中第一次出现的位置
- indexOf(CharSequence
- s,CharSequence needle, int start)
- 返回从字符序列中s指定的位置开始字符序列needle第一次出现的位置
- indexOf(CharSequence
- s,CharSequence needle, int start, int end)
- 返回在字符序列s指定的一段中字符序列needle第一次出现的位置
- isDigitsOnly(CharSequence
- str)
- 判断给定的字符序列str是否只包含数字。
- isEmpty(CharSequence
- str)
- 判断给定的字符序列是否为空。如果字符串为空或者它的长度为0返回true。
- isGraphic(char
- c)
- 判断给定的字符c是否是图形。
- join(CharSequence
- delimiter,Iterable tokens)
- 让指定的迭代器加入到指定的分隔符序列中,组成一个字符串,并返回这个字符串。
- lastIndexOf(CharSequence
- s, char ch)
- 返回指定字符ch在指定的字符序列s中最后一个位置的值。
- lastIndexOf(CharSequence
- s, char ch, int last)
- 返回指定字符ch在指定的字符序列s中到指定的末尾last处最后一个位置的值。
- lastIndexOf(CharSequence
- s, char ch, int start, int last)
- 返回指定字符c在指定的字符序列s中指定的一段中长度(以start开始,last结尾)最后一个位置的值。
- regionMatches(CharSequence
- one, int toffset,CharSequence two, int ooffset, int len)
- 返回指定的字符序列one从toffset开始和指定的字符序列two从ooffset开始比较指定长度len的字符序列的布尔值。如果相同就返回true.如果不同就返回false。
- replace(CharSequence
- template,String[] sources,CharSequence[] destinations)
- 返回一个新的字符序列:这个源字符串被目标字符序列组中对应的元素所代替而产生的一个新字符序列。
- split(String
- text,Pattern pattern)
- 返回用指定的样式pattern来分隔这个字符串而形成的那个新的字符串。
- split(String
- text,String expression)
- 返回用指定表达式expression来分隔指定的字符串而产生的新的字符串。当字符串被分隔后是空的就返回['']
- substring(CharSequence
- source, int start, int end)
- 返回字符序列源的子字符串。从字符序列源中的指定的位置取出一个新的字符串并返回。
SQLite 的一些操作
四种操作 ISUD----I 添加,S 查询,U 更新,D 删除
添加用 insert,查询用 select,更新用 updata,删除用 delete
Android 可以借助 SQLiteOpenHelper 的 getReadableDatabase() 和 getWritableDatabase() 方法来创建和升级数据库
用上面两个方法返回的 SQLiteDatabase 对象,对数据进行 CRUD;
Insert:添加
在拿到 SQLiteDatabase 对象后
- ContentValues values = new ContentValues();
- values.put("author", "DaiAnNa");
- values.put("name", "TaiYangDeYunLuo");
- values.put("price", 13.14);
- values.put("pages", 200);
- sqLiteDatabase.insert("Book", null, values);
- values.clear();
- values.put("author", "ArBoLuo");
- values.put("name", "YueLiangDeXiaoYun");
- values.put("price", 14.13);
- values.put("pages", 100);
- sqLiteDatabase.insert("Book", null, values);
查询出 person_inf 表中人名以孙开头的数据:
whereArgs:用于为 whereArgs 子句传递参数。
whereClause:满足该 whereClause 子句的记录将会被更新。
values:代表想要更新的数据。
table:代表想要更新数据的表名。
update(String table,ContentValues values,String whereClause,String[] whereArgs),这个更新方法的参数说明如下:
values:代表一行记录的数据。
nullColumnHack:代表强行插入 null 值的数据列的列名。
table:代表想插入数据的表名。
insert(String table,String nullColumnHack,ContentValues values), 这个插入方法的参数说明如下:
来源: http://www.bubuko.com/infodetail-1954764.html