全部博文(436)
分类: 系统运维
2010-10-28 23:28:37
王辉组——Google android深入(四)
一、 本周进度
首先,为我们代码的成功下载庆贺,这是我们开展核心内容的奠基石;
第二,解决了之前困扰我们的一个大问题——语言的问题。我们三个学C++的有了李紫璇同学下载的C++版的部分程序,会给我们省去很多关于另一种语言学习的障碍。在此,特别感谢李紫璇同学。
第三,这周大家表现都很好,积极配和组内的活动,参与讨论,互帮互助,实现了小组存在的必要性与其价值。
进度描述:本周我们分析了以下程序段
PhoneNumberUtils.h
PhoneNumberUtilsTest.cpp
System.cpp
二、 本周总结
1081000036 王辉
这周给组员们找到了Java的代码,并给大家进行了任务分配。我的主要任务是和李紫璇和笑笑进行c++的源代码的阅读,#include
在Range的方法中,它会生成一个list的对象,但是在XRange中,它生成的却是一个xrange的对象,当返回的东西不是很大的时候,或者在一个循环里,基本上都是从头查到底的情况下,这两个方法的效率差不多。但是,当返回的东西很大,或者循环中常常会被Break出来的话,还是建议使用XRange,这样既省空间,又会提高效率。
以上是我这周学到的新内容,也是对自己知识层面上的扩充。虽然自己编程能力不强,但是相信这学期的代码阅读会是我的阅读代码能力提高,对于编程语言的理解更深入。
1081000044于曼
艰巨的读代码工作开始了,刚开始接到的程序是C++类的,对于我来说有些难度,因为我学的是JAVA,但是仔细读起来又不是完全不懂,毕竟有一些C的底子。
在10段程序中就开始搜索有没有我可以真正读懂的,找到一个短的就开始着手,新的问题出现了,利用Netbeans将程序导入,利用软件的步骤不会,于是就一个一个的试,结果还是以放弃告终。这个真的太需要时间了,而我们需要珍惜时间,把时间放在有用的事情上。还是找一些JAVA的程序读比较拿手,软件用起来也比较熟练,做起来也比较有自信。
在读代码的过程中,也会遇到一些比较专业的术语,但这些比较好解决,上网一搜就可以得到答案。在这过程中,最主要的是学会了许多搭平台的小技巧,对于这些开源的东西,我们应该多学习多应用,之后才会在这基础上得到自己的东西。
在接下来的时间里,把问题解决,更努力把任务完成。
1081000022李筱
这一周,本人积极完成老师布置的作业。在完成作业的过程中,遇到了许许多多的麻烦,但是遇到麻烦后我并没有放弃,而是翻阅相关书籍、查阅相关资料,努力解决困难。有些问题在书籍、资料中并不能找到完全切合的答案,我便与小组成员积极探讨问题,从而更好的解决我的疑问。不仅如此,通过小组成员的讨论,我还发现并解决了许多我没有碰到但是同样存在疑问的问题。在小组讨论完毕后,我积极总结,详细记录问题的解决方法。
1081000024李紫璇
本周我的任务是解读sqlite中的PhoneNumberUtils部分,由于我的c++基础不是很好,所以还是很费劲的。。。只解读了前半部分,解读结果和下次的总结一同写进总结里,困难就是c++的基础。。。。
1081000040肖笑
在这一周中,我的任务是解读PhoneIndex部分,这个主要是目录索引 ,虽然里面没有我没见过的库函数或函数,把每一行代码分开看都能看懂,可是奇怪的是联系在一起,我却不太清楚它的作用是什么。这让我很苦恼,能够明白他只是用了一些条件句和循环,但是他真的想做什么刚开始还是有点懵。但后来联系了一下总体,还是略微的明白了些许。下回我们组一起在讨论一下,我想应该就彻底通了~
1081000037王培
本周的任务主要是进行代码的阅读,由于开始着手代码的阅读会遇到好多问题,一个小的程序是有很多函数组成,其中还有好多陌生的功能,通过Netbeans开发工具进行阅读代码工作。进行DoubanQuery.java的源代码阅读中出现了类 java.net.URL的使用,继承 Query类,。public class Query extends Object构造查询对象约束。提供的 static 方法返回可用来列出和枚举 MBean 的查询表达式。每种约束构造方法仅允许使用适当的类型作为参数。接口Java.util.List 的使用。Java.util.List 所实现的接口ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible。 其中还有一些语句没有弄明白,需要以后继续去学习。
三、 本周分工及下周展望
本周分工:
Java语言部分代码阅读:于曼 王培 李筱
C++语言部分代码阅读:王辉 李紫璇 王培
下周展望:
下周的主要任务依旧是代码阅读,一个工程中有十几个代码文件,读完的小程序代码继续读下一个,没读完的大程序的继续读。希望大家继续努力,再接再厉。
四、部分代码分析举例
代码分析:
package com.eoemobile.infos_assistant;//包的信息
//导入类
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.eoemobile.infos_assistant.util.PreferencesUtil;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
//System类继承了Activity类实现了OnItemClickListener的接口
public class System extends Activity implements OnItemClickListener{
private static final String TAG = "System";//定义final行字符串
ListView itemlist = null;//生成ListView类的对象切赋值为空
List生成一个Map
@Override
public void onCreate(Bundle savedInstanceState) {//onCreate方法,需要传入一个Bundle类型的对象
super.onCreate(savedInstanceState);//继承父类中的构造方法
setContentView(R.layout.infos);//设置目录表的方法
setTitle("系统信息");//设置标题
itemlist = (ListView) findViewById(R.id.itemlist);//通过findViewById的方法返回一个ListView类型的对象
refreshListItems();//调用本类的refreshListItems方法
}
private void refreshListItems() {//刷性列表项的方法
list = buildListForSimpleAdapter();//调用本类的buildListForSimpleAdapter方法,并将其值赋给list对象
SimpleAdapter notes = new SimpleAdapter(this, list, R.layout.info_row,
new String[] { "name", "desc" }, new int[] { R.id.name,
R.id.desc });//构造一个SimpleAdapter类的对象,对象名字为notes
itemlist.setAdapter(notes);//将notes对象以参数形式传入itemlist对象的setAdapter方法
itemlist.setOnItemClickListener(this);//itemlist对象设置setOnItemClickListener方法的监听对象为本类
itemlist.setSelection(0);//temlist对象设置setSelection方法的参数为0
}
// buildListForSimpleAdapter方法返回一个List类型的对象
private List
List构造一个List
// Build a map for the attributes
Map
map = new HashMap
//map对象的相关方法设置
map.put("id", PreferencesUtil.VER_INFO);
map.put("name", "操作系统版本");
map.put("desc", "读取/proc/version信息");
list.add(map);//list添加map对象到链表
//重置map对象
map = new HashMap
//map对象的相关方法设置
map.put("id", PreferencesUtil.SystemProperty);
map.put("name", "系统信息");
map.put("desc", "手机设备的系统信息.");
// map.put("icon", R.drawable.mem);
list.add(map);//list添加map对象到链表
//重置map对象
map = new HashMap
//map对象的相关方法设置
map.put("id", PreferencesUtil.TEL_STATUS);
map.put("name", "运营商信息");
map.put("desc", "手机网络的运营商信息.");
list.add(map);//list添加map对象到链表
return list;//返回list对象
}
@Override
//onItemClick方法
public void onItemClick(AdapterView> parent, View v, int position, long id) {
Intent intent = new Intent();//构造一个Intent类的对象,对象名字为intent
Log.i(TAG, "item clicked! [" + position + "]");//为Log.i方法添加参数
Bundle info = new Bundle();//构造一个Bundle类的对象,对象名字为info
Map
//为info对象的方法传参
info.putInt("id", (Integer) map.get("id"));
info.putString("name", (String) map.get("name"));
info.putString("desc", (String) map.get("desc"));
info.putInt("position", position);
//为intent对象的方法传参
intent.putExtra("android.intent.extra.info", info);
intent.setClass(System.this, ShowInfo.class);
//为startActivityForResult方法传参
startActivityForResult(intent, 0);
}
}
chinaunix网友2010-10-29 20:26:45
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com