Android开发学习笔记
by---- 三爷一、新建项目
Application Name: 应用程序名,即该应用的名称,日后在安卓市场上将显示该App名称,与项目无关。
Project Name:项目中的工程名(项目中的App名),注意,在项目中将使用该名称,该工程将被存放在下面命名的包下,命名时要注意规范。
Package Name:包名,格式为“com.自定义的包名.工程名”,其中包名自定义,但包名后的工程名必须和上面的Project Name一至。
Build SDK:选择android SDK的版本,建议选择1.6版本兼容范围广一点
Minimum Required SDK:该程序兼容的最低SDK版本,这里选择的版本必须跟上面选择的Build SDK版本一致。
Activity Name:第一个Activity的名称,随意命名,它将是程序的入口
Layout Name:为第一个Activity布局的xml文件名称,随意命名,建议与其对应的activity 名称有一定的关联性。
Title:上面设置的Activity的标题(这个在程序里都可以改)
二、项目文件夹说明
com.PackageName.ProjectName:该项目的文件夹,里面存放我们编写的源文件
gen:由ADT自动生成,其中包含有一个R.java的文件是用于声明res文件夹下的资源的句柄,程序将通过该文件来引用项目中的资源,该文件不要随意改动,。
Android 1.6:这里面是android的SDK包,程序中所有引用android的类都是从这个包里引用;这里的1.6为新建项目时选择的sdk版本号,这里的版本号会根据你新建项目时选择的版本号不同而不同。
bin:这个目录存放编译生成的android安装文件
assets:存放项目的资源,比如视频、音频、图片等较大的资源,注意该目录下的资源不会被生成句柄,所以只能通过路径来引用。
res:存放项目的资源,比如图标、图片、音频等,该目录下的资源会被R.java文件自动生成句柄以方便程序引用。
Layout:存放用于布局的xml文件
Menu:存放菜单布局文件
Values:存放数据存储用的string.xml文件,程序中的一些数据都可以存在这个文件中。
AndroidManifest.xml:整个应用程序的配置文件,包括配置包名、图标、标签、activity 类名以及入口activity等配置,所有的应用程序组件必须在该文件中注册。所以,每个Activity 必须都先在该文件中注册。
三、Activity
1、什么是Activity
Activity是android的一个重要组件,它是人机交互的一个接口,主要用于显示应用
程序界面,每个界面都是由一个Activity来显示,也就是说每个界面都有一个Activity。
Activity是一个后台的守护进程,是不可见的,而控件是可见的,我们能够看到的
界面都是由添加到该界面的Activity中的控件组成,也就是控件是添加到Activity
中,由Activity控制其显示,可以把Activit看作是控件的容器,每个界面都由一个
Activity组成,而每个Activity都是由若干个控件组成,所以,我们可以抽象地把
Activity看成是一个界面。每个Activity都必须先在AndroidManifest.xml文件当中注
册。(Activity实际上是android的一个类,我们写的Activity都是在继承该类,所以
每个android程序的java源文件名都和其Activity名称一致)
2、如何创建Activity
Activity一般是在新建工程源文件的时候创建,也就是在每创建一个android源文件
的时候创建;我们所建的Activity是继承于Android类库的一个名为Activity的类,
并且要复写onCreate方法。onCreate方法是每个Activity执行时自动被android系
统调用的方法,可以看作是每个Activity执行的一个入口,其功能与每个java类中
的main方法类似,不过在android中没有main方法。
创建一个Activity的要点:
创建一个继承于android中的Activity的类,类名即为我们创建的activity名
复写onCreate方法
在AndroidManifest.xml文件中注册我们创建的activity
为activity引入布局文件
在布局文件中为activity添加控件
下面是一个最简单的Activity:
/**创建一个名为MainActivity的Activity(当然必须要继承于android的Activity,
不然只能说这是一个普通的类)
*/
publicclass MainActivity extends Activity {
@Override
//重写onCreate方法,当执行该Activity时将从这里开始执行publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); /*调用父类
的onCreate方法*/
setContentView(https://www.doczj.com/doc/2611780948.html,yout.activity_main); /*引用
R.java文件中的布局文件句柄activity_main,其对应的
布局文件是layout上当下同名的xml文件
activity_main.xml,这样本activity就可以显示该布局
文件中定义的控件了。*/
}
}
3、如何在AndroidManifest.xml文件中注册Activity
其中AcivityName是你自己创建的Activity名称,Android:label的值是你的label名称,这里引用的是string中的app_name的值。如果在
其格式如下:
上面的代码要放在
如果要注册的Activity不是程序的入口,则可以省略
android:name=".ActivityName" android:label="@string/title_activity_main">
4、什么是控件
控件就是我们在界面中所看到的元素,说白了就是android指定的xml标签。比如一个提交按钮就是一个控件,一个文本显示区域就是一个控件,一个文件编辑区域就是一个控件,一个图像显示区域就是一个控件,和HTML中的元素控件类似。控件可以无限嵌套。每个控件其实都对应一个类,比如TextView控件对应TextView 类,所有控件对应的类都是View的子类,我们可以通过findViewById(id)这个方法来返回控件对应类的对象,再通过对象的方法来操作该控件
5、如何在Activity中添加视图View
控件是添加到Layout的xml文件当的,所以只需在Activity中引用Layout的xml布局文件即可,这样该Activity就包含了其对应布局文件的所有控件。引用格式如下:setContentView(https://www.doczj.com/doc/2611780948.html,yout.activity_main);其中activity_main表示对应的布局文件名。
或者setContentView(new MyView(this)); 其中MyView是自定义View
6、在Activity中获取控件的对象
TextView myTextView = (TextView)findViewById(R.id.myTextViewId); //获取指定id的控件的对象
myTextView.setText(“这是本控件显示的内容”); //设置控件的Text属性
这里的myTextViewId用实际的id名替换即可,其返回值类型是View,View是android 当中所有控件的父类,但这里演示的是获取文本显示控件的id,所以需要强制类型转换其为TextView类型(控件类型的关键字也就是该控件对应的类名,与该控件的标签名相同),如果获取的是其它类型的控件id,只需要强制转换为对应的控件类型即可。第二行是为上面获取到的控件重新设置内容。
7、什么是Layout
Layout目录下存放的是一种xml格式的布局文件,用于控制界面(Activity)中控件的布局,其角色相当于Web前端中的HTML+CSS的混合。所有的控件都是添加到对应的布局文件当中,由该布局文件来控制其显示方式。Activity是通过引用R.java 当中对应的布局文件来控制其控件的显示方式。
8、如何在Activity中引用Layout文件
因为Layout是在res目录下,所以其下的所有资源和文件都在R.java中生成句柄,所以我们只需要引用R.java文件当中对应Layout文件的句柄即可,引用方法是在onCreate方法的第二句也即super.onCreate(savedInstanceState)语句后面添加下列语句即可:setContentView(https://www.doczj.com/doc/2611780948.html,yout.activity_main);
其中的activity_main是对应的Loyout文件在R.java中的键名。
9、Layout文件解析
android:orientation=”vertical”表示从上至下,即垂直布局
android:orientation="horizontal":从左至右,即水平布局
xmlns:android:命名空间
android:layout_width=”fill_parent”:宽度设置,这里为填满父控制
android:layout_height=”wrap_content”:高度设置,这里为内容高度,即自动适应内容高度
Android:id=”@+id/IdName”:为控件添加一个id,这里id的值为IdName
android:text=”@string/app_name”:设置该文本控件的内容,这里引用string里的paa_name的值,也可直接在这里写值,不过为了方便扩展(比如多语言版本)建议把值放在string文件当中引用。
注:@+表示添加到R.java中,@表示从R.java中引用
四、Android开发的步骤
五:学习android的方法:
1.官方参考手册及示例
2.官方Api demo
3.Android源码
想要学习移动应用的开发,除了必备的知识要掌握好之外,更多的是要掌握一些核心的基础知识,并且是能够起到关键性作用的知识点,必须是要了解清楚,如果你也是在学习Android开发,下面的核心基础或者对你有一定的帮助! 1.ListView的引入 为什么要采用listview?其实是在数据量过于庞大时,传统的存储方式它是会占用机器大量内存,最终导致OOM异常(内存溢出),listview的出现将会是有效的解决这个弊端的出现。 重点来了listview如何使用呢? res/layout布局文件中定义listview src的java代码里面关心控件findviewbyid(R.id.listview); 创建适配器对象,适配器继承baseAdapter接口 2.构造方法 getCount();控制listview的条目数 getView();得到当前条目视图 View.inflate();布局填充器 设置适配器:setAdapter(adapter); 设置listview列表项的点击事件:setOnClickLinsstener();
通知listview更新数据:adapter.notifyDataSetChanged(); 3.对话框的使用 *普通对话框 *单选对话框 *多选对话框 *进度对话框 *进度条对话框 *自定义对话框 布局填充器:Viewview=View.inflate(Context,https://www.doczj.com/doc/2611780948.html,yout.dialog,null); 核心API:dialog.setView(view); 4.常见的一些适配器的使用 *数组适配器:ArrayAdapter *简单适配器:SimpleAdapter 5.数据库的常见的事务 为什么需要需要定义数据库事务?最主要的还是为了保证多条操作语句同步执行 6.数据库事务执行流程 db.beginTransaction();开启事务 db.setTransactionSuccessful();设置事务执行成功 db.endTransaction();结束事务 7.样式和主题 样式的作用在单独的UI控件上面 主题的作用它是在activity或者application上 以上的这些功能控件、数据库等这些是开发中必备的功能,在开发中只要这些基本的核心知识都掌握了,那么这对你接下里的进一步开发是比较有帮助的。
Android应用开发基本知识点汇总 Activity 一生命周期 4种状态 running / paused / stopped / killed 生命周期 Activity启动 onCreate -> onStart -> onResume 点Home返回主界面 onPause -> onStop 再次回到原Activity onRestart -> onStart -> onResume 退出Activity onPause -> onStop -> onDestroy 进程优先级前台/可见/服务/后台/空 二任务栈 三启动模式 standard singleTop 栈顶复用 singleTask 栈内复用 singeInstance 四scheme跳转协议 服务器可以定制化告诉App跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面 Fragment 一第五大组件 为什么是第五大组件 Fragment相对Activity更节省内存,切换更舒适Fragment加载到Activity的两种方式 静态加载xml 动态加载fragmentTransaction.add(id, fragment, “name”); .commit; FragmentPagerAdapter与FragmentStatePagerAdapter
FragmentStatePagerAdapter在切换时回收内存,适合页面较多的情况FragmentPagerAdapter并没有回收内存,只是detach了Activity 二生命周期 onAttach -> onCreate -> onCreateView -> onViewCreated -> onActivityCreated -> onStart -> onResume -> onPause -> onStop -> onDestroyView -> onDestroy -> onDetach 先创建Activity后创建Fragment,先销毁Fragment后销毁Activity 三Fragment之间的通信 Fragment调用Activity getActivity Activity调用Fragment 接口回调 Fragment调用Fragment方法findFragmentById 四FragmentManager replace add remove Service 一应用场景,与Thread区别 Service是什么后台长时间运行,没有用户界面,运行在主线程,不能有耗时操作 Service与Thread区别 Activity难以与Thread交互,尤其当Activity销毁以后 二开启Service的两种方式 StartService onCreate -> onStartCommand -> onBind -> onDestroy onStartCommand return START_STICKY;
1、关于android进程,说法不正确的是( B ) A、组件运行所在的进程,是由androidManifest.xml决定,它可以指定该组件运行于哪个进程。 B、背景进程是不为用户所见的Activity,但是还会有可能被用户看到,所以它不能被杀死 C、当急需内存时,android会决定优先关闭那些空闲的进程 D、可视进程一般不会不被系统所杀死 2、Matrix类的作用( A ) A、可以存储缩小或放大比列 B、存储文件中的图片信息 C、存储资源中的图片信息 D、存储内存中的图片信息 3、关于主题的说法,错误的是( D ) A、它是属性集合 B、它可以在程序中来设置 C、它通常用于一个Activity或所有Activity上 D、它可以用于单个TextView上 4、setOnTouchEvent 设置返回值为true 和 false有何区别?以下说法较准确是( C ) A、没有区别,都能对事件进行监听 B、设置为true时只能在移动时获得一次监听事件,false则可以多次 C、设置为false是,在处理一次监听事件后,系统将抛弃该次事件 D、返回true表示这个消息已经被处理结束,后续的handler不再接收到这个消息 二、开发技术设计与应用能力部分 注:以下程序均是相关程序或小项目的实现代码,根据每个程序或项目的特性,完成程序空缺部分的内容,使其实现。具体程序代码注释省略。 图1 图2 图3 图4 1)电话实现[主界面如图1] 程序描述:完成手机打电话功能。 public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.doczj.com/doc/2611780948.html,yout.activity_main); Button btn_call = (Button)this.findViewById(R.id.btn_call); btn_call.setOnClickListener(new btnCall()); } private class btnCall implements OnClickListener (1) { public void onClick(View v) { // TODO Auto-generated method stub EditText et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); String s_number = et_number.getText().toString().trim(); (2) Intent i_call = new Intent(); i_call.setAction(Intent.ACTION_CALL(3)); i_call.setData(Uri.parse("tel:"+s_number)); startActivity(i_call); (4) } } } 2)动画实现[主界面如图2] 程序描述:手机屏幕触摸后演示动画,假设XML文件已经设置好,id资源为:R.drawable.panda public class MainActivity extends Activity { ImageView iv_action; AnimationDrawable ad_action; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.doczj.com/doc/2611780948.html,yout.activity_main); iv_action = (ImageView)this.findViewById(R.id.iv_action); iv_action.setBackgroundResource(5)(R.drawable.panda); ad_action = (AnimationDrawable) iv_action.getBackground(); } public boolean onTouchEvent(MotionEvent event) { ad_action.start();(6) return super.onTouchEvent(event); } } 3)撕衣服游戏实现 项目描述:划动屏幕时完成撕衣服效果,并产生撕衣服声音(sound.mp3) public class MainActivity extends Activity { ImageView iv_upper; ImageView iv_below;
项目总结 时间过的好快,为期三个月的实训生活即将结束了,每一次的实训我们都受益匪浅,我 们学到的不仅仅是课内还有课外,实训让我们的课内知识得到了巩固,专业知识、编程水平 都有很大的提高,我们非常感谢这次实训。 刚开始二周的高强度的课程安排让我们受益匪浅;接下来的项目实训又让我们可以巩固 了课程。这让我觉得实习生活充实而有意义。 乐淘购物项目和android优化大师,我更好的学习了ui的设计,如何使界面漂亮,美观, 巩固了listview,gridview,的使用,学会了动画进入界面的,和会移动的画廊等等。在这 两个项目中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完 成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获 取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上 真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。 音乐播放器项目,我们是七个人组成小组完成的,由组长带领我们,分配任务,每个人, 都发挥自己的长处,更好地去完成任务。对于团队开发来说,团结一致使我深有体会。团队 的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具 体实践中,不仅加深我对理论的掌握和 运用,还让我拥有了一次又一次难忘的开发经历,这是也是实训最大的收获。 这次实训对于我以后学习、找工作也真是受益菲浅,在这3个月中让我初步从理性回到 感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发! 相信这些宝贵的经验会成为我今后成功的重要的基石。在此,我非常感谢指导老师和 同学对我的帮助。篇二:android实训报告 通信与电子信息专业实训报告 项目名称:基于android的游戏开发 班级 10通信1班 姓名 学号 指导教师 成绩 实训时间:年月日— 目录 一、实训目的及其意义 (3) 1.1、目的及意义 (3) 1.2、研究现状 (3) 二、实训主要任务、重点及难点 (4) 2.1、任务 (4) 2.2、重点内容及实现途径 (4) 三、实训具体内容及完成的主要工作 (5) 3.1、认识基础开发 (6) 3.2、了解数据存储 (6) 3.3、总体实训过程 (7) 四、实际遇到的困难,解决问题的方法和措施 (8) (一)、所遇问题 (8) (二)、解决方法与措施 (9) 五、心得体会 (9)
1、Intent的Component属性的作用是什么,如何定义此属性? component(组件),指定Intent的的目标组件的类名称。通常Android会根据Intent 中 包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹 配的目标组件。但是,如果component这个属性有指定的话,将直接使用它指定的组件, 而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。Component属性的作用是用来指定Intent的目标组件的类名称。如果Component这个属性被指定了的话,Intent的其它属性都是可选项,Android 会直接使用Component指定目标组件,而不再执行其它查找过程。 在使用时,需要先创建一个ComponentName对象,然后将它设置成Intent对 象的Component的属性。通过setComponent()、setClass()和setClassName() 三种方法都可以设置组件的名称,通过getComponent()方法则可获得设置项。 2、发送广播时,可以通过sendCatagoryBroadcast()方法将Intent对象发送出去( ). (错) 3、Android是什么?( ) 一种操作系统 4、下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是( ) DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。 5、Android操作系统最早由哪个公司研发?( ) Android公司 6、下列中不属于手持设备的是( ) 机顶盒 7、下列不是手机操作系统的是()。Windows Vista 8、到目前为止,Android操作系统的最高版本是哪个?( )Android L 9、安装Android SDK时,可以通过( )在线安装或离线安装。Android sdk manager 10、开发Android应用程序时,一般使用的计算机语言是( ) 。JAVA 11、E/AndroidRuntime(1099): https://www.doczj.com/doc/2611780948.html,ng.RuntimeException: Unable to instantiate activity ComponentInfo{com.test/com.test.CanvasActivitys}: https://www.doczj.com/doc/2611780948.html,ng.ClassNotFoundException: com.test.CanvasActivitys in loader dalvik.system.PathClassLoader[/data/app/com.test-1.apk] 这段话是程序报错在LogCat中产生的记录,从中可以分析问题的原因可能在哪里?( ) CanvasActivitys类没有在AndroidManifest中正确申明 12、对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android 需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或Service (对) Intent 可以传递View对象(错) Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被 调用者之间的解耦(对) 通过Intent可以删除程序(对) 13、下面退出Activity错误的方法是()。System.exit( ) 14、当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行 的回调函数是( )。startActivityResult() 15、这是一个资源配置文件,下面描述正确的是? ( )这个shape文件是画一条虚线,实 线段5dp,间隔3dp 16、Toast toast = new Toast(this); toast.setText("今天天气不错\n哈哈"); toast.show(); 上面代码的执行结果是什么( )。代码会抛出异常,因为new出的Toast对象不能再使用setText方法来设置提示框文本
合肥工业大学学生自主实习报告 学号: xxx 姓名: xxx 实习单位: 实习时间:2014年6月22-7月5日
一、实习目的: 1、掌握android系统开发的一些常用知识 2、拥有独立解决开发中遇到问题的能力 3、熟悉android软件开发流程并至少做一个android软件项目。 了解现阶段互联网发展主流,了解移动互联网,认识移动互
联网的发展与展望,认识Android,了解基于Android的应用软件开发方法及其商业流程。把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。使学生在此期间能够初次体会到实际生产中的种种技能与经验,完成一项项目锻炼独立思考及团队合作能力。使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况。生产实习是学校教学的重要补充部分,是区别于普通学校教育的一个显著特征,是教育教学体系中的一个不可缺少的重要组成部分和不可替代的重要环节。它是与今后的职业生活最直接联系的,学生在生产实习过程中将完成学习到就业的过渡,因此生产实习是培养技能型人才,实现培养目标的主要途径。它不仅是校内教学的延续,而且是校内教学的总结。生产实习一方面巩固了书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的生产现场的实际知识,使我们在实践中得到提高实训环节对于提高学生的综合能力和全面素质具重要意义 二、实习单位:苏州高博培训
Android应用程序开发是以Java语言为基础的,所以需要有扎实的Java基础知识。首先熟悉java基本语法,然后熟悉设计模式等。 a) Java基础语法:看下面的《Java知识点列表》 b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多(设计模式大概有28种,具体请看设计模式系列),一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,理解android容易很多。 有了这些知识,然后再来学习Android开发,一定会事半功倍。 《Java知识点列表》:这些是别人总结,我只是加些说明。 开发环境: 1 Java SDK 下载和安装 2 环境变量的配置(path和classpath) 编程基础: 3. 标识符命名规范 4 Java数据类型 5 运算符 6 分支语句(if,switch) 7 循环语句(for,while) 8 函数的定义方法 只要是个程序员,都懂。语言之间可以融会贯通。 面向对象基础: 向对象的三个基本特征是:封装、继承、多态 9. 面向对象与面向过程语言之间的区别 10 面向对象基本思想(封装) 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏 11 类的定义方法 12 对象和类的关系 13 对象的创建方法 14 通过对象使用成员变量和成员函数的方法 15 构造函数的作用 16 函数的重载 17 static 的作用 18 this的作用 面向对象高级: 19 面向对象基本思想(继承) 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进
1Activity 1.1Activity的概念 是Android应用层开发的四大组件之一,主要负责和用户交互部分,有自己的生命周期,在其上可以布置按钮,文本框等各种控件,简单来说就是Android 的UI部分。 1.2Activity与View的区别 1)Activity是四大组件中唯一一个用来和用户进行交互的组件。可以说 Activity就是android的视图层。 2)如果再细化,Activity相当于视图层中的控制层,是用来控制和管理View 的,真正用来显示和处理事件的实际上是View。 3)每个Activity内部都有一个Window对象, Window对象包含了一个 DecorView(实际上就是FrameLayout),我们通过setContentView给Activity设置显示的View实际上都是加到了DecorView中。 1.3Activity生命周期 1.3.1生命周期主干
1.3.2其他中转方法
1.4Activity启动模式1.4.1四种启动模式
1.4.2配置样例 1.5Activity启动方法 1)在一个Activity中调用startActivity()方法。 直接启动Activity,不带请求码。 2)在一个Activity中调用startActivityForResult()方法。 带请求码启动Activity。 1.6请求码与响应码
2BroadcastReceiver 2.1概念 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。 2.2应用场景 在Android系统中,广播体现在方方面面: eg: 1.当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动 服务的功能; 2.当锁屏或者点亮屏幕时就会产生一条广播,接收这条广播就可以实现一 些暂停或者开启一些耗电进程的功能。 3.当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做 出提示和保存数据等操作; 4.当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量 低时告知用户及时保存进度; 2.3注册 2.3.1静态注册 2.3.1.1概念 静态注册是在AndroidManifest.xml文件中配置的。 2.3.2动态注册 2.3.2.1概念 动态注册需要在代码中动态的指定广播地址并注册。 2.3.2.2需要注意的事项 RegisterReceiver是android.content.ContextWrapper类中的方法,Activity和Service都继承了ContextWrapper,所以可以直接调用。在实际应
android应用开发技术 一、判断题 1、在同一个资源目录中,可以存在两个文件名相同、扩展名不同的资源文件。(×) 2、Android系统下的文件,可以被本系统里的所有应用程序访问。(×) 3、无论Service是以启动方式还是绑定方式运行,该Service类都要重写onBind方法。(√) 4、一个Intent可以包含多个action。(×) 5、对于有序广播消息,是按照各个BroadcastReceiver注册的顺序先后接收并处理。(×) 6、Android是J2ME的一个实现。(×) 7、Android既是操作系统也是开发平台。(√) 8、Android是通过栈的形式来管理多个Activity的。(√) 9、View是ViewGroup的子类。(×) 10、一个Intent可以包含多个category。(√) 二、单项选择题 1、下面哪个不是Android的界面布局方式?( A ) A、FlowLayout B、LinearLayout C、TableLayout D、RelativeLayout 2、浏览网页使用的Intent的Action是什么?( D ) A、ACTION_CALL B、ACTION_EDIT C、ACTION_SEND D、ACTION_VIEW 3、Android 关于启动方式的service生命周期的onCreate()和onStartCommand()方法,说法正确的是( D ) A、当第一次启动的时候只会调用onCreate()方法 B、当第一次启动的时候只会调用onStartCommand ()方法 C、如果service已经启动,将先后调用onCreate()和onStartCommand ()方法 D、如果service已经启动,只会执行onStartCommand ()方法,不再执行onCreate()方法 4、下列关于ContentProvider的说法错误的是:( B ) A、ContentProvider的作用是实现数据共享和交换 B、要访问ContentProvider,只需调用ContentProvider的增删改查相关方法 C、ContentProvider提供的URI必须以“content://”开头 D、Android对于系统里的音视频、图像、通讯录提供了内置的ContentProvider 5、下列关于继承的哪项叙述是正确的?( D ) A、在Java中类允许多重继承 B、在Java中一个类只能实现一个接口 C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口允许继承自另一个接口 6、以下哪种方式不能退出当前活动状态的Activity?( C ) A、调用finish()方法 B、单击(返回)按钮 C、单击(回到桌面)按钮 D、Activity运行时出现异常 7、对于TextView,使用哪个属性来设置显示的文本?( B ) A、android:textSize B、android:text C、android:textColor D、android:string 8、要处理Button的点击事件,需要注册哪个监听器?( A ) A、OnClickListener() B、OnButtonClickListener() C、OnButtonListener() D、OnItemClickListener() 9、在下述Java语言语句中,错误 ..的创建数组的方法是( D ) A、int intArray [ ]; intArray=new int[5]; B、int intArray [ ]=new int[5]; C、int [ ] intArray ={1,2,3,4,5}; D、int intArray [5]={1,2,3,4, 5}; 10、以下哪种方式不能退出当前活动状态的Activity?( C ) A、调用finish()方法 B、单击(返回)按钮 C、单击(回到桌面)按钮 D、Activity运行时出现异常 11、对于音乐播放器程序中的播放进度控制,使用哪个控件适合?( C ) A、ProgressBar B、RatingBar
考试知识点(Android闭卷考试) 1.理解Android常见的几种布局。 几种布局的高与宽,制定 LinearLayout,线性布局,布局中的控件在线性方向上依次排列。默认控件水平方向排列。 android:orientation=”horizontal” android:orientation=”vertical” 注意: 当就是水平方向排列,控件宽度不能设置为 android:layout_width="match_parent" 否则控件会把水平方向沾满,其她控件无法会控件覆盖(无法放置) 当就是垂直方向,内部控件不能将android:layout_height="match_parent"指定为match_parent android:layout_weight="1",使用比例方式来指定控件的大小 RelativeLayout,相对布局,就是通过相对定位的方式让布局中控件可以出现在布局的任何位置。 内部控件,三种属性, 属性值就是true或false android:layout_centerHrizontal 水平居中, 属性值就是”@id/*“android:layout_below 在某元素的下方 属性值就是数值 android:layout_marginLeft 离某元素左边缘的距离 是通过添加TableRow、其她组件来控制表格的行数与列数 GridLayout就是Android4、0之后新增的布局管理器,因此正常情况下需要在Android 4、0 之后的版本中才能使用,如果希望在更早的版本中使用的话,需要导入相应的支撑库(v7包的gridlayout包)。 Grid Layout 网格布局,与前面所讲的 Table Layout(表格布局) 有点类似,不过她有很多前者没有的东西,因此也更加好用: - 可以自己设置布局中组件的排列方式 - 可以自定义网格布局有多少行、列 - 可以直接设置组件位于某行某列 - 可以设置组件横跨几行或者几列
要做开发,必须要知道的中的知识点。 . 基本数据类型 整形: 个字节 个字节 个字节 个字节 字符: 个字节 浮点数: 个字节 个字节 布尔: 个字节 新增二进制整数 以或者开头 中字符时位的编码方式,格式是'\',其中代表一个十六进制整数 中规定了正无穷大、负无穷大和零 正无穷大一个正数除以 负无穷大一个负数除以零 除以或者对一个负数开方得到一个非数 . 在中布尔类型只能是和 . 在中没有多维数组 看似像语言中的多维数组不是真正的数组,比如 [][] , [] [] [] 是真实存在的,装的是地址,和语言中动态分配为的数组一样 [][] [][] . 中带包的编译方法 . 会在当前目录下生成目录树 运行包名字.类名字 . 多态中的对象的不具有多态性,如父类对象子类(),对象是调用的父类的,即使子类中覆盖了该字段。 . 运算符 格式:引用变量名类名(或者接口)他用于判断前面的对象是否是后面对象的类,子类、实现类的实例,是返回,否者返回 . 中基本数据类型和对应封装类之间的转化 ;
(); (); 其他的类型也是这样的。 .单例()类例子 代码如下: { ; (){} () { ( ) { (); } ; } ([] ) { (); (); ( ); } } 修饰的成员变量初始化问题 类:必须在静态初始块中或声明该时指定初始值 实例:必须在非静态初始块中或声明该时指定初始值或构造器中声明 变量必须显式初始化,系统不会对变量进行隐式初始化 会使用常量池来管理曾经用过的字符串直接常量,例如: ""; ,系统把常量字符串“”存在常量池,当再次执行 ""; 是 方法不可以重写,类不能被继承 如果用方法和是一样的 若果是用修饰的方法在子类中出现,那是子类新定义的,与父类没有关系 .不可变类:创建后该类的是不可改变的。提供了个基本变量的包装类和都是不可改变类。
目录 Android知识点: (3) 一:dom解析,以及写入数据到xml文件: (3) 二:连接socket并获取返回值 (4) 三:创建socket服务器 (4) 四:获取本地设备信息;执行串口命令 (5) 五:获取设备当前时间 (5) 六:对于节省代码 (6) 七:访问网络权限 (6) 八:显示ProgressDialog (6) 九:handle消息机制定义与对信息的处理 (6) 十:显示AlertDialog,以及对其进行按键处理 (7) 十一:判断网络是否连接 (8) 十二:判断是否连接有线网络 (8) 十三:判断是否能够ping通互联网:返回0则通,否则不通 (9) 十四:显示进度圈,防止用户继续其线程start (9) 十五:下载文件 (10) 十六:解析json文件(android中使用,解析本地文件夹) (11) 十七:解析服务器json文件,根据路径获取输入流并解析 (12) 十八:获取所有已经安装的apk的信息 (14) 十九:安装apk,分为静默安装与非静默安装,静默卸载 (15) 二零:发送与接收广播 (17) 二一:java中解析JSON文件 (18) 二二:获取文件列表 (19) 二三:DownloadManager (21) 附件一:android-apkinfo.json (23) 附件二:java_apkinfo_json (24) 二四:复制assets中资源文件到sdcard或data/files目录下 (25) 二五:解析与重写xml文件 (27) 二六:设置Viewpager的Adapter适配器 (29) 二七:设置listView的Adapter适配器 (30) 二八:设置按键监听器 (33) 二九:对于data中图片信息的处理与使用 (34) 三十:OnpageChangeListener页面切换监听器 (34) 三一:Activity之间数据的传递 (35) 三二:通过代码添加button (36) 三三:文件的输入输出 (37) 三四:关于文件路径 (38) 三五:对sd卡的读写权限设置 (38) 三六:file.getCanonicalPath() (39) 三七:命令行运行java文件 (39) 三八:activity无头标题 (40)
Android面试常问基础知识点 1、四大组件是什么 1)Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个Activity 通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新Activity创建时,它就会放到栈顶,这个Activity就处于运行状态。 2)Service:服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。 3)ContentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过ContentResolver类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver接口的notifyChange函数通知那些注册监控特定URI的ContentObserver对象。 如果ContentProvider和调用者在同一进程中,ContentProvider的方法(query/insert/update/delete等)和调用者在同一线程中;如果ContentProvider和调用者不在同一进程,ContentProvider方法会运行在它自身进程的一个Binder线程中。 4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。 2、四大组件的生命周期和简单用法 1)Activity:onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory() onCreate():为Activity设置布局,此时界面还不可见; onStart(): Activity可见但还不能与用户交互,不能获得焦点 onRestart(): 重新启动Activity时被回调 onResume(): Activity可见且可与用户进行交互 onPause(): 当前Activity暂停,不可与用户交互,但还可见。在新Activity启动前被系统调用保存现有的Activity中的持久数据、停止动画等。 onStop(): 当Activity被新的Activity覆盖不可见时被系统调用 onDestory(): 当Activity被系统销毁杀掉或是由于内存不足时调用 2)Service a) onBind方式绑定的:onCreate->onBind->onUnBind->onDestory(不管调用bindService几次,
第一行代码知识点总结 1、Android四层架构:Linux内核层(提供底层驱动)、系 统运行库层(提供特性支持,一些核心库)、应用框架 层(提供各种API)和应用层 2、Android四大组件:活动(activity)、服务(Service)、 广播接收器(Broadcast Receiver)和内容提供器 (Content Provider) 3、Android应用特色开发:四大组件、丰富的系统控件、 SQL数据库(轻量级,运算速度快的嵌入式关系型数 据库)、强大的多媒体和地理位置定位(LBS)。 4、Android程序设计讲究逻辑和视图分离,通常在布局文件中编写在界面 4.1Android的日志工具Log:Log.d()打印调试信息对应debug。Log.v()打印琐碎、意义最小日志,对应verbose,Log.i()打印比较重要的数据对应info;Log.w()打印警告信息对应error;Log.e()打印错误信息对应error。Log.d(类名,打印内容) 4.2活动:主要用于和用户进行交互、基本用法 4.3活动中的提醒方式Toast 4.4、drawable存放图片,mipmap存放应用图标,values 放字符串、样式,颜色等配置,layout放布局文件
4.5、Android Studio是采用Gradle来构建项目 5、Intent的使用:显式Intent和隐式Intent() 6、活动的生命周期 7、返回栈的定义 8、Android是使用任务来管理活动的 9、活动状态:运行、暂停、停止、销毁状态 10、Activity类中的七个回调方法:onCreate()onStaart()、onResume()、onPause()、onStop()、onDestroy()和onRestart() 11、活动的三种生存期:完整、可见、前台 12、活动的四种启动模式:standard、singleTop、singleTask 和singleInstance 13、常用控件:TextView、Button、EditText、ImageView、ProgressBar(进度条)、AlertDialog(对话框)、ProgressDialog(显示对话框时出现进度条) 14、基本布局:线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)百分比布局、AbsoluteLayout、TableLayout 15、常用和最难用的控件ListView 16、滚动控件:RecyclerView 17、碎片的定义、使用方式、碎片的生命周期、状态和回调 18、广播主要的两种类型:标准广播和有序广播;注册广播
一,android 四大组件 Activity、Service、BroadcastReceiver 、ContentProvider 二,Activity生命周期 三,横竖屏切换时的生命周期 1、新建一个Activity,并把各个生命周期打印出来 2、运行Activity,得到如下信息 10-23 02:35:54.261: INFO/chenys(4385): onCreate--> 10-23 02:35:54.271: INFO/chenys(4385): onStart--> 10-23 02:35:54.286: INFO/chenys(4385): onResume--> 3、按crtl+f12切换成横屏时 10-23 02:36:58.331: INFO/chenys(4385): onSaveInstanceState--> 10-23 02:36:58.411: INFO/chenys(4385): onPause--> 10-23 02:36:58.462: INFO/chenys(4385): onStop--> 10-23 02:36:58.481: INFO/chenys(4385): onDestroy-->
10-23 02:36:58.622: INFO/chenys(4385): onStart--> 10-23 02:36:58.632: INFO/chenys(4385): onRestoreInstanceState--> 10-23 02:36:58.642: INFO/chenys(4385): onResume--> 4、再按crtl+f12切换成竖屏时,发现打印了两次相同的log 10-23 02:38:14.172: INFO/chenys(4385): onSaveInstanceState--> 10-23 02:38:14.172: INFO/chenys(4385): onPause--> 10-23 02:38:14.172: INFO/chenys(4385): onStop--> 10-23 02:38:14.172: INFO/chenys(4385): onDestroy--> 10-23 02:38:14.281: INFO/chenys(4385): onCreate--> 10-23 02:38:14.301: INFO/chenys(4385): onStart--> 10-23 02:38:14.312: INFO/chenys(4385): onRestoreInstanceState--> 10-23 02:38:14.331: INFO/chenys(4385): onResume--> 10-23 02:38:14.812: INFO/chenys(4385): onSaveInstanceState--> 10-23 02:38:14.852: INFO/chenys(4385): onPause--> 10-23 02:38:14.861: INFO/chenys(4385): onStop--> 10-23 02:38:14.892: INFO/chenys(4385): onDestroy--> 10-23 02:38:14.921: INFO/chenys(4385): onCreate--> 10-23 02:38:15.021: INFO/chenys(4385): onStart--> 10-23 02:38:15.031: INFO/chenys(4385): onRestoreInstanceState--> 10-23 02:38:15.111: INFO/chenys(4385): onResume--> 5、修改AndroidManifest.xml,把该Activity添加android:configChanges="orientation",执行步骤3 10-23 02:42:32.201: INFO/chenys(4875): onSaveInstanceState--> 10-23 02:42:32.232: INFO/chenys(4875): onPause--> 10-23 02:42:32.301: INFO/chenys(4875): onStop--> 10-23 02:42:32.311: INFO/chenys(4875): onDestroy-->