android一些入门基础信息了解(2015年5月18日)
本篇文章是最近几天学习android的一个总结。ps:本人刚接触android,不到一个星期,暂时不再学android,所以本博客纯粹是自己的一个总结,以供以后查看,里面有可能有错误的地方。
1、目的
2、android操作系统的基础知识
/system/app 存放rom本身附带的软件即系统软件;
/system/data 存放/system/app中核心系统软件的数据文件信息;
/data 存放的是用户的软件信息(非自带rom安装的软件);
/data/app 存放用户安装的软件;编程有时可以通过package安装包的路径进行截取来判断是否是第三方应用,不过比较正确的方法是通过flag进行判断。例如:
// 通过路径来判断第三方应用//获取软件包的信息...PackageInfo p = pack.get(i);String s = p.applicationInfo.sourceDir;// 判断路径if (s.substring(0, 10).equals("/data/app/")) {//相关操作...}// 另一种方法(推荐),通过flag标志,来获取应用程序类别// 获取应用程序信息android.content.pm.ApplicationInfo aiTemp = reInfo.activityInfo.applicationInfo;// 通过标志ApplicationInfo.FLAG_SYSTEM、ApplicationInfo.FLAG_EXTERNAL_STORAGE判断if ((aiTemp.flags & android.content.pm.ApplicationInfo.FLAG_SYSTEM)<=0) { // 第三方应用(包含SD Card)// 相关操作...}
来源网址:/data/app路径判断,flag标志进行判断
/data/data 存放所有软件(包括/system/app 和 /data/app 和 /mnt/asec中装的软件)的一些lib和xml文件等数据信息;
/data/dalvik-cache 存放程序的缓存文件,这里的文件都是可以删除的。
/mnt、/sdcard和/storage目录的关系,在linux中,/mnt一般是挂载外部的文件系统,里面的文件夹一般都是link,同样android中也是这种关系,不过是“挂载”的/sdcard和/storage文件夹。
3、android的安装流程
ii. Android SDK Platform-tools
iii. Android SDK Build-tools (highest version)
v. A system image for the emulator, such as ARM EABI v7a System Image
vii. Android Support Library
ix. Google Play services
4、adb命令
adb start-server
adb remount
5、HelloWorld级别的android应用程序源码分析
6、查询例子的分析
主要是参考:
http://blog.csdn.net/qinjuning/article/details/6867806
http://blog.csdn.net/qinjuning/article/details/6892054
http://www.baidufe.com/item/8786bc2e95a042320bef.html
遇到的问题:
i. View的理解:
View可以参考MFC的View关系,各级父、子对象都有传递消息,处理消息函数和成员变量都是有继承关系的。具体可以参考:
http://www.2cto.com/kf/201207/143408.html
ii. 布局文件
布局主要是:LinearLayout,RelativeLayout,ListView等,需要重点强调一下,在用ListView+SimpleAdapter进行列表显示时,setContentView必须是有<ListView>节点,但是,利用SimpleAdapter进行重复显示的信息时,不需要有ListView。setContentView中的ListView感觉就是对程序说,这个界面是ListView形式的,至于它的每一行怎么显示,就是SimpleAdapter中绑定的xml布局文件设置的问题。比如:
其中manage_bigfile.xml,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" android:orientation="horizontal" ><TextView android:id="@+id/file_ordernum" android:layout_width="wrap_content"android:layout_height="match_parent"android:paddingLeft="3dp"android:paddingRight="5dp" /><TextView android:id="@+id/file_ishide" android:layout_width="wrap_content"android:layout_height="match_parent"android:paddingRight="5dp" /><TextView android:id="@+id/file_name" android:layout_width="wrap_content"android:layout_height="match_parent"android:paddingRight="5dp" /><TextView android:id="@+id/file_size" android:layout_width="wrap_content"android:layout_height="match_parent"android:paddingRight="5dp" /></LinearLayout><TextView android:id="@+id/file_path" android:layout_width="wrap_content"android:layout_height="match_parent"android:paddingRight="5dp" /><Button android:id="@+id/button_removefile"android:layout_width="wrap_content"android:layout_height="match_parent"android:text="@string/buttonremovefile"/>
</LinearLayout>
相应的setContentView对应的test,仅有一个ListView节点,对应如下:
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@id/android:list"android:layout_width="match_parent"android:layout_height="match_parent" ></ListView>
参考网址:
官网layout的介绍
http://weizhulin.blog.51cto.com/1556324/311450/
http://blog.csdn.net/zuolongsnail/article/details/6370035
iii. Intent类
Intent表示可以用于传递信息,引用百度百科解释:
Intent(意图)主要是解决Android应用的各项组件之间的通讯。
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
例如,在一个联系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)
为了实现这个目的,listActivity需要构造一个 Intent,这个Intent用于告诉系统,我们要做“查看”动作,此动作对应的查看对象是“某联系人”,然后调用startActivity (Intent intent),将构造的Intent传入,系统会根据此Intent中的描述,到ManiFest中找到满足此Intent要求的Activity,系统会调用找到的 Activity,即为detailActivity,最终传入Intent,detailActivity则会根据此Intent中的描述,执行相应的操作。
所以可以通过putExtra和getIntExtra获取传递的对象(即信息),比如:
设置信息:
Intent intent = new Intent(getBaseContext(),MainActivity.class) ;intent.putExtra("filter", filter) ;startActivity(intent);
获取信息:
if(getIntent()!=null){filter = getIntent().getIntExtra("filter", 0) ;}
参考网址:
http://baike.baidu.com/link?url=Alx8Ups1cUwK_VC5DmDA9fH-nmmO0OFblGUqOvPvBb24Q4ZoFhWghvxkgwcSkuGh6HEZjgeQt7wYQCaCiFxGla
http://blog.csdn.net/hanghangaidoudou/article/details/6419152
http://bbs.csdn.net/topics/360131518
iv. 内置存储卡和外置存储卡信息的获取
class StorageList {private Activity mActivity;private StorageManager mStorageManager;private Method mMethodGetPaths;public StorageList(Activity activity) {mActivity = activity;if (mActivity != null) {mStorageManager = (StorageManager)mActivity.getSystemService(Activity.STORAGE_SERVICE);try {mMethodGetPaths = mStorageManager.getClass().getMethod("getVolumePaths");} catch (NoSuchMethodException e) {e.printStackTrace();}}}public String[] getVolumePaths() {String[] paths = null;try {paths = (String[]) mMethodGetPaths.invoke(mStorageManager);} catch (IllegalArgumentException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}return paths;}
}
或者:
android.os.Environment.getDataDirectory(); // 内置存储卡
android.os.Environment.getExternalStorageDirectory(); // 外置SD Card
参考网址:
http://blog.sina.com.cn/s/blog_5da93c8f0102vcam.html
http://blog.163.com/hero_213/blog/static/39891214201162123236660/
v. 获取每个应用程序使用的空间,可以通过获取
PackageStats
for(Map.Entry<String, String> entry:map.entrySet()){ System.out.println(entry.getKey()+"--->"+entry.getValue());
}
第二种:
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){ Map.Entry<String, String> entry1=(Map.Entry<String, String>)i.next(); System.out.println(entry1.getKey()+"=="+entry1.getValue());
}
第三种:
Iterator it=map.keySet().iterator();
while(it.hasNext()){ String key; String value; key=it.next().toString(); value=map.get(key); System.out.println(key+"--"+value);
}
参考网址:
viii. 其他
Context介绍
http://blog.csdn.net/race604/article/details/9331807
java中的反射,invoke方法
http://blog.sina.com.cn/s/blog_64e467d60100yqz9.html
http://www.cnblogs.com/hfzsjz/p/4097698.html
http://bbs.csdn.net/topics/370105077
程序附带的所有源码的链接地址:
http://download.csdn.net/detail/syx19930206/8713777
android一些入门基础信息了解(2015年5月18日)相关推荐
- [北京][2015年7月18日 周六] 工程师专场:忘记代码,一起来 “谈情说爱”
工程师专场:忘记代码,一起来"谈情说爱" 时间:2015年7月18日 星期六 19:00-21:00 地点:海淀区中关村创业大街昊海楼9层虫洞创业之家 [活动内容] 这是简单心理组 ...
- 6月3日至5日 服务器信息维修,2015年6月3日维护公告
亲爱的玩家朋友: 为保证服务器的运行稳定和服务质量,<梦幻西游>手游所有服务器将于2015年6月3日8:00停机,进行维护工作.预计维护时间为8:00-9:00.如果在预定时间内无法完成维 ...
- C++STL泛型编程基础知识讲解--------2015年2月3日
今天学习了C++STL泛型编程的基础知识,我对主要知识整理如下: STL提供三种类型的组件:容器,迭代器,算法.支持泛型程序设计标准. 容器主要有两类:顺序容器和关联容器. 顺序容器:vector,l ...
- eNSP使用介绍,VRP基础配置(2017年12月18日 17:43:53)
pwd:查看所处路径 Idx:索引 drw:d--direc 代表这不是一个文件,是一个子文件夹 没有d的就是个具体的文件.r:可读 w:可以修改 直接dir只能查看所在的目录的文件.看其他的 ...
- 2015年10月18日-10月24日课程作业(HA Cluster)
1.阐述Linux HA Cluster的使用背景: HA Cluster基础理论及配置 2.总结Linux HA Cluster的系统组成,HA Cluster的工作模型: HA Cluster基础 ...
- dnf 服务器维护时间表2015年,DNF2015年6月18日更新维护结束时间及内容介绍
今天小编为大家带来了DNF2015年6月18日更新维护结束时间及内容介绍,感兴趣的朋友们可以跟着小编去下文了解一下哦! DNF地下城与勇士将会在2015年6月18日进行版本更新维护,全区全服停机,一共 ...
- python入门之玩转列表我的菜单_我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)...
#!/usr/bin/env python3#coding:utf-8 '''Created on: 2015年12月30日 @author: 张晓宇 Email: 61411916@qq.com V ...
- 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(day01~day10)(2015年11月17日20:51:59)
本笔记是个人笔记+摘录笔记相结合,非完全原创 day01 win 7系统打开DOS有趣方法:按住shift+右键,单击"在此处打开命令窗口"(注意:在此处可以是任何的文件夹,不一定 ...
- 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(2015年10月25日23:28:50)
day01 win 7系统打开DOS有趣方法:按住shift+右键,单击"在此处打开命令窗口"(注意:在此处可以是任何的文件夹,不一定是桌面) 用DOS删除的文件不可以在回收站恢复 ...
最新文章
- windows 如何cmd启动redis
- 【caffe】create_cifar10.sh在windows下解决方案
- 使用Suhosin保护PHP应用系统(禁用eval)
- halcon例程讲解_跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
- camel apache_Apache Camel 3的工作终于开始了
- Java工厂构造函数参数,javascript 面向对象之构造函数、工厂方式、字面量
- qq浏览器私密空间在哪 具体操作步骤
- 自如回应南京租客事件:未对该房源进行过装修 配置的家具符合规定
- dell服务器硬盘锁_服务器十大排行
- oracle adrci purge,adrci中的purge
- PYNQ实战笔记(二)————使用HLS构建加法器
- POJ 计算几何专项训练(2) 【1269】【1410】【1696】【3347】【2826】
- 预约移民后服务器不显示,玩家预约凌烟阁服务器瞬间成功,这算不算被几率
- 用C语言打印一个菱形图案!
- POI设置excel格式为文本格式
- linux curl证书错误,关于curl:使用Wget忽略SSL证书错误
- 2019-2020新生训练class 1- 熟悉oj的使用方法贪心
- 元镜头——手机相机的下一场革命
- XML和JSON-自我小结
- cjz格式文件打开方式_鹏业四川CJZ整体解决方案
热门文章
- Three.js使用ammo.js实现投篮游戏
- eb8000软件怎样上传_eb8000程序上传与
- AE按行政区范围加载图层数据(转载)
- 基于51单片机的水质水位PH值溶解率电导率水温浊度检测proteus仿真原理图PCB
- db2时间差换成月_IBM DB2计算两个时间戳记间的时间差
- 【优化求解】基于PESA—II实现多目标优化求解matlab源码
- python泰勒公式_Python用泰勒公式模拟函数
- 51单片机电机测速程序c语言,单片机仿真编码器电机测速程序
- C++变量命名潜规则
- 竞品分析报告的几个错误