1. Activity启动模式
(1)standard
默认模式,每启动一个都会在任务栈中创建一个,back键会一次从栈中退出。
(2)singleTop
如果要启动的Activity在栈顶,则不会重新创建。
(3)singleTask
任务栈中没有这个Activity,则会在任务栈中创建一个实例,如果任务栈中已经存在,则会将任务栈中的此activity之上的activity全部出栈,然后调用此activity的onNewIntent.
(4)singleInstance
只有一个实例,运行于独立的task
2.layout_gravity 和 gravity
android:gravity : 限定View的内容的位置,针对子布局
android:layout_gravity 相对于父布局的位置。
3.时间管理:
(1)进程切换非常昂贵,避免多任务,保持单进程。
(2)研究表明,集中注意力、高效工作,每天最多4小时。
(3)划分任务的优先级,不要把'急切'当作'重要'。
(4)起床后,不要查看邮件和微信。
(5)避免开会,因为人类已知的最浪费时间的事情,就是开会。
(6)早晨4点起床,到了中午,你就完成了一天的任务。
(7)你没空时不会做的事情,有空了也不会做。 (世上并没有拖延症,只是不想做而已。如果可能,应该尽早放弃你没有意愿去做的那些事。而那些没有时间也会去做的事,才是你应该全力以赴的人生方向。完全赞同,没时间永远是借口)
4.Android ConditionVariable:
ConditionVariable用于线程同步,相当于wait(),但是更方便简单
有三个方法: block() open() close()
1 public void block() 2 { 3 synchronized (this) { 4 while (!mCondition) { 5 try { 6 this.wait(); 7 } 8 catch (InterruptedException e) { 9 } 10 } 11 } 12 } 13 14 public void open() 15 { 16 synchronized (this) { 17 boolean old = mCondition; 18 mCondition = true; 19 if (!old) { 20 this.notifyAll(); 21 } 22 } 23 } 24 25 public void close() 26 { 27 synchronized (this) { 28 mCondition = false; 29 } 30 }
从源码中可以看到,其实也是通过wait实现的,有一点需要注意 open过之后,只有close了,才能block住。
5.back键将应用放到后台,不退出
复写onBackPressed()方法, 调用Activity的 moveTaskToBack()方法 即可。
6. Android ClassLoader
PathClassLoader 只能操作dex文件
DexClassLoader 能加载外部apk,jar,dex