刚刚嵌入式转移动应用,由于没有经验就到了一个刚刚创业的外包公司,工作很累没有多少空余时间,然后看到很多博客都写得很牛逼,就想自己什么时候可以那样,现在也抽点时间总结下安卓的基础常识。
安卓有四大组件
1,Activity :
2,Service 服务
3,BroadcastReceive广播接收器:
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()方法,另外也可以使用全局变量用于数据保存。
settag()/getTag() 用于 listview 传递位置值的,
v.getTag().toString; 字符型
(Integer)v.getTag(); 整型 Integer.parseInt(v.getTag().toString())
Android的数据存储方式
一.SharedPreferences方式
二.文件存储方式
三.SQLite数据库方式
四.内容提供器(Content provider)方式
五. 网络存储方式
一般网络数据下载之后,需要缓存在本地,主要使用sharedPreferences和SQLite和文件
android中的动画两种
一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
Handler的两种形式
因为安卓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