Activity启动模式(lauchMode)

launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。

Android版本和API Level对应关系

平台版本 API 级别 VERSION_CODE 备注
Android 9.0 28 Pie 平台亮点
Android 8.1 27 Oreo 平台亮点
Android 8.0 26 Oreo 平台亮点
Android 7.1 25 Nougat 平台亮点
Android 7.0 24 Nougat 平台亮点
Android 6.0 23 Marshmallow 平台亮点
Android 5.1 22 LOLLIPOP_MR1 平台亮点
Android 5.0 21 LOLLIPOP
Android 4.4W 20 KITKAT_WATCH 仅限 KitKat for Wearables
Android 4.4 19 KITKAT 平台亮点
Android 4.3 18 JELLY_BEAN_MR2 平台亮点
Android 4.2、4.2.2 17 JELLY_BEAN_MR1 平台亮点
Android 4.1、4.1.1 16 JELLY_BEAN 平台亮点
Android 4.0.3、4.0.4 15 ICE_CREAM_SANDWICH_MR1 平台亮点
Android 4.0、4.0.1、4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2
Android 3.1.x 12 HONEYCOMB_MR1 平台亮点
Android 3.0.x 11 HONEYCOMB 平台亮点
Android 2.3.4 Android 2.3.3 10 GINGERBREAD_MR1 平台亮点
Android 2.3.2 Android 2.3.1 Android 2.3 9 GINGERBREAD
Android 2.2.x 8 FROYO 平台亮点
Android 2.1.x 7 ECLAIR_MR1 平台亮点
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT 平台亮点
Android 1.5 3 CUPCAKE 平台亮点
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE

摘自Android Developers#

Flutter 路由跳转

静态路由

1. 注册

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    return new MaterialApp(
title: 'Flutter 示例',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter 示例主页'),
routes: { //静态注册路由,不能传递参数
"SecondPage": (BuildContext context) => new Second()
},
// routes: <String, WidgetBuilder>{
// // 这里可以定义静态路由,不能传递参数
// '/router/second': (_) => new Second(),
// },
);

2. 使用

1
2
///这种路由的缺点是不能传递参数。
Navigator.pushNamed(context, "SecondPage");

动态路由

有参跳转

1
2
3
4
5
6
7
8
//跳转到新的 页面我们需要调用 navigator.push方法  -
Navigator.push(context,
new MaterialPageRoute(
builder: (BuildContext context) {
return new Second(title: "第二个页面");
}
)
);

无参跳转

1
2
3
4
5
6
7
//跳转到新的 页面我们需要调用 navigator.push方法  -
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new Second()
)
);

apkgithub

pe装机,开机设置启动项快捷键

PE装机启动键来了。

组装机主板 品牌笔记本 品牌台式机
主板品牌 启动按键 笔记本品牌 启动按键 台式机品牌 启动按键
华硕 F8 联想 F12 联想 F12
技嘉 F12 宏基 F12 惠普 F12
微星 F11 华硕 ESC 宏基 F12
映泰 F9 惠普 F9 戴尔 ESC
梅捷 ESC/F12 联想ThinkPad F12 神舟 F12
七彩虹 ESC/F11 戴尔 F12 华硕 F8
华擎 F11 神舟 F12 方正 F12
斯巴达克 ESC 东芝 F12 清华同方 F12
昂达 F11 三星 F12 海尔 F12
双敏 ESC IBM F12 明基 F8
翔升 F10 富士通 F12
精英 ESC/F11 海尔 F12
冠盟 F11/F12 方正 F12
富士康 ESC/F12 清华同方 F12
顶星 F11/F12 微星 F11
铭瑄 ESC 明基 F9
盈通 F8 技嘉 F12
捷波 ESC Gateway F12
Intel F12 eMachines F12

遍历Map的四种方法

  • 第一种:普遍使用,二次取值
1
2
3
4
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
  • 第二种
1
2
3
4
5
6
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
  • 第三种:推荐,尤其是容量大时
1
2
3
4
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
  • 第四种
1
2
3
4
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}

15种CSS居中方式

简言

CSS居中是前端工程师经常要面对的问题,也是基本技能之一。今天有时间把CSS居中的方案汇编整理了一下,目前包括水平居中,垂直居中及水平垂直居中方案共15种。如有漏掉的,还会陆续的补充进来,算做是一个备忘录吧。

本站总访问量 | 本文总阅读量