刚刚嵌入式转移动应用,因为没有经验就到了一个刚刚创业的外包公司,工做很累没有多少空余时间,而后看到不少博客都写得很牛逼,就想本身何时能够那样,如今也抽点时间总结下安卓的基础常识。java
安卓有四大组件
linux
1,Activity :android
2,Service 服务数据库
3,BroadcastReceive广播接收器:json
4,Content Provider内容提供者缓存
activity有能够分为 activity和fragmentactivty,fragmentactivty出现是为了解决activity切换时费时和数据恢复麻烦而出现的,在这两个组件中经常使用的生命周期方法为oncreate()、ondestroy(),前者进行界面的初始化和数据加载,后者用于数据删除回收内存等。安全
数据传递与保存网络
多个activity切换过程可使用intent传递信息也可使用全局变量Application,保存当前activity数据则使用Activity的onSaveInstanceState()和onRestoreInstanceState()方法,由系统销毁一个Activity时,onSaveInstanceState()会被调用。可是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。一般onSaveInstanceState()只适合用于保存一些临时性的状态(内存不足、用户直接按Home键),而onPause()适合用于数据的持久化保存。另外,当屏幕的方向发生了改变,能够重写Activity的 onSaveInstanceState() 和onRestoreInstanceState()方法,另外也可使用全局变量用于数据保存。app
settag()/getTag() 用于 listview 传递位置值的,ide
v.getTag().toString; 字符型
(Integer)v.getTag(); 整型 Integer.parseInt(v.getTag().toString())
Android的数据存储方式
一.SharedPreferences方式
二.文件存储方式
三.SQLite数据库方式
四.内容提供器(Content provider)方式
五. 网络存储方式
通常网络数据下载以后,须要缓存在本地,主要使用sharedPreferences和SQLite和文件
android中的动画两种
一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可使视图组件移动、放大、缩小以及产生透明度的变化;另外一种Frame动画,传统的动画方法,经过顺序的播放排列好的图片来实现,相似电影。
由于安卓ui中处理控件只容许在主线程中,因此须要handler和message
class MyHandler extends Handler { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if(msg.what==1) { System.out.println(msg.arg1+"handle"); bar.setProgress(msg.arg1); } } } MyHandler handler; Message message=new Message(); message.what=1; handler.sendMessage(message); 方法二 Class a implements Callback { Handler mhandler; mhandler = new Handler(this); //这个要加上 B b = new B(mhandler); b.bb(); @Override public boolean handleMessage(Message message) { switch (message.what) { case 10: System.out.println("shi"); break; } return false; } } Class B { Handler handler; public B(Handler handler){ this.handler = handler; } void bb(){ Message msg = new Message(); msg.what = 10; handler.sendMessage(msg); } }
json数据解析
NetJsonData NetJson = new NetJsonData(); JSONObject jsonObj = new JSONObject(data); NetJson.szReuslt = jsonObj.getString(KEY_RESULT); NetJson.szErrDesc = jsonObj.getString(KEY_ERRDESC); NetJson.szApiType = jsonObj.getString(KEY_API_TYPE); if (jsonObj.length() <= 3) return NetJson; JSONArray jsonList = jsonObj.getJSONArray("0"); JSONObject tmpJson = null; UserTimeLines tmpDetail = null; NetJson.usertiemline = new ArrayList<UserTimeLines>(); for (int i = 0; i < jsonList.length(); i++) { tmpJson = jsonList.getJSONObject(i); if (tmpJson == null) continue; tmpDetail = new UserTimeLines(); tmpDetail.userHead = tmpJson.getString("UserHeadPicFileName"); NetJson.usertiemline.add(tmpDetail); } return NetJson;
安卓每一个app对应一个linux中的用户,pid,每一个app对应一个dmv,由守护线程负责维护。保证app安全独立
安卓资源文件分布图
安卓进程状态
安卓单位
String.Format("qw%02d.png",1);
这个就是输出 qw01.png 自动从%后面替换后面的数字 02表示两位不足补0