1.Android和Java的UI设计不同:
Android:通过setcontentview(View)
Java:Swing编程中的Jframe控件,这个Jframe本身就是一个布局管理器,只需要不断的往其中加控件就行
2.为什么要对App进行签名?
App是以包名作为唯一标识,如果两个App的包名相同,那么安装在同一台手机上,后面安装的会把前面安装的覆盖;
3.为什么不在代码中控制UI界面而是交给xml来实现界面设计?
因为这样有利于高层的解耦,使得代码具有简洁性;
4.Java中的Math.random返回0.0-1.0之间的数;
5.Android5种储存数据方式:
SharedPreferences存储数据;文件存储数据;SQLite数据库存储数据;使用ContentProvider存储数据;网络存储数据;
Preference,File, DataBase这三种方式分别对应的目录是/data/data/Package Name/Shared_Pref, /data/data/Package Name/files, /data/data/Package Name/database 。
sharedPrefrences,File,Database不适合跨进程分享数据,因为它在高并发的读写访问中会使数据丢失;
而ContentProvider已经在内部对数据库的操作做了同步处理,可以让多线程对其进行操作(前提是单个对象,若是多个对象无法保证线程同步)
解决多线程对数据的读取可用线程锁来使这些线程同步,线程改变UI不需要保证线程同步;
只能避免这种并发的情况出现或者采用线程同步来限制多个线程的操作
6.默认刚创建的APP只有一个进程,进程名就是包名;
7.Android多线程:Handle+Thread(new 多个Thread) AsyncTask(默认串行执行,使用executeOnExecutor来并行执行) ThreadPoolExecutor(线程池,含四种模式) IntentService(只有一个独立的线程,线程按传入顺序分别执行,后面的线程需排队等待,比普通线程优先级高,不容易被系统杀死)
8.Activity结束方式:finish() , System.exit(0), 强制抛出异常
9.
10. Android ANR的时间 : activity 5s ;broadcastreciver 10s ;service 20s;