Android基础知识点
四?大组建是什什么?
1. activity:Activity是所有程序的根本,所有程序的流程都运?行行在Activity 之中
2. service:Service 是没有界?面的?长?生命周期的代码
3. BroadcastReceiver:?广泛运?用的在应?用程序之间传输信息的机制
4. Content Provider:是Android提供的第三?方应?用数据的访问?方案
四?大组件的?生命周期和简单?用法
1. Activity 七个?生命周期?方法,
Activity之间的通信?方式
1. 在Intent跳转时携带数据(bundle exatra)
2. 借助类的静态变量量来实现
3. 借助全局变量量来实现/Application
4. 借助外部存储来实现通讯
i. 使?用SharedPreference实现Activity之间的数据通信
ii. 使?用SQLite来实现数据共享通信
iii. 直接使?用File来实现
iv. 借助Service来实现(bindservice)
Activity各种情况下的?生命周期
参考Android 基础?面试题.pdf
Activity与Fragment之间?生命周期?比较
activity有7个?生命周期,Fragment有11个?生命周期参
考:https://www.360docs.net/doc/e19866881.html,/u012702547/article/details/50253955
在创建的过程中,是Activity带领Fragment执?行行?生命周期中的?方法,所以?生命周期?方法的执?行行顺序是这样的:
1. Activity--onCreate();
2. Fragment--onAttach();
3. Fragment--onCreate();
4. Fragment--onCreateView();
5. Fragment--onActivityCreated();
接着是这样的:
6.Activity--onStart();
7.Fragment--onStart();
8.Activity--onResume();
9.Fragment--onResume();
我们知道,?无论对于Activity还是对于Fragment,onResume这个?生命周期都是他们执?行行时间最?长的,当我们的Activity或者Fragment打开之后,它就?一直处于这个?生命周期中。
当销毁的时候,春江?水暖鸭先知,当然是Fragment先感知到,于是销毁的时候就是Fragment带领Activity:
10.Fragment--onPause();
11.Activity--onPause();
12.Fragment--onStop();
13.Activity--onStop();
14.Fragment--onDestroyView();
15.Fragment--onDestroy();
16.Fragment--onDetach();
17.Activity--onDestroy();
Activity上有Dialog的时候按Home键时的?生命周期
onPause onSaveInstanceState onStop
Activity的四种启动模式对?比
参考:https://www.360docs.net/doc/e19866881.html,/mynameishuangshuai/article/details/51491074
standard、singleTop、singleTask、singleInstance
Activity状态保存于恢复
参考:https://www.360docs.net/doc/e19866881.html,/timejay/article/details/52838221
1. onSaveInstanceState() onSaveInstanceState()?方法?用来在Activity被强制销毁
之前保存数据,onSaveInstanceState()?方法会携带?一个 Bundle类型的参数,Bundle提供了了?一系列列的?方法?用于保存数据,?比如可以使?用 putString()?方法保存字符串串,使?用 putInt()?方法保存整型数据。每个保存?方法需要传?入两个参数,第?一个参数是键,第?二个参数是真正要保存的内容。
2. onRestoreInstanceState() onSaveInstanceState()?方法?用来取得之前在
onSaveInstanceState()保存的值。另外,除了了onRestoreInstanceState()可以取得onSaveInstanceState()保存的值之外,onCreate()函数也可以取得保存的值,这些值就存在onCreate()函数的参数savedInstanceState?里里,在哪个函数取出这些值就要看具体的需求了了。
fragment各种情况下的?生命周期
https://www.360docs.net/doc/e19866881.html,/jokeeeeee/article/details/46004931 Fragment状态保存startActivityForResult是哪个类的?方法,在什什么情况下使?用?
参考:https://https://www.360docs.net/doc/e19866881.html,/p/7572097eccf
1. Fragment中启动,Activity中接收结果:使?用
getActivity().startActivityForResult()
2. Fragment中启动,Fragment中接收结果:使?用startActivityForResult(),且在
Activity的onActivityResult()中调?用super.onActivityResult()
如何实现Fragment的滑动?
activity向fragment之间传递数据的?方式?
参考:https://www.360docs.net/doc/e19866881.html,/b10060224/article/details/51325775
1. 第?一种?方式,也是最常?用的?方式,就是使?用Bundle来传递参数
MyFragment myFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putString("DATA",values);//这?里里的values就是我们要传的值 myFragment.setArguments(bundle);
然后在Fragment中的onCreatView?方法中,通过getArgments()?方法,获取到bundle对象,然后通过getString的key值拿到我们传递过来的值。
2. 第?二种?方式,是在宿主Activity中定义?方法,将要传递的值传递到Fragment
中,在Fragment中的onAttach?方法中,获取到这个值。(getactivity)
fragment之间传递数据的?方式?
?
谈谈你对ContentProvider的理理解
ContentProvider管理理android以结构化?方式存放的数据。他以相对安全的?方式封装数据并且提供简易易的处理理机制。Content provider提供不不同进程间数据交互的标准化接?口。
说说ContentProvider、ContentResolver、ContentObserver 之间的关系
参考:https://www.360docs.net/doc/e19866881.html,/heqiangflytosky/article/details/31777363
ContentProvider是Android的四?大组件之?一,可?见它在Android中的作?用?非同?小可。它主要的作?用是:实现各个应?用程序之间的(跨应?用)数据共享,?比如联系?人应?用中就使?用了了ContentProvider,你在?自?己的应?用中可以读取和修改联系?人的数据,不不过需要获得相应的权限。其实它也只是?一个中间?人,真正的数据源是?文件或者SQLite等。?一个应?用实现ContentProvider来提供内容给别的应?用来操作,通过ContentResolver来操作别的应?用数据,当然在?自?己的应?用中也可以。ContentObserver——内容观察者,?目的是观察(捕捉)特定Uri引起的数据库的变化,继?而做?一些相应的处理理,它类似于数据库技术中的触发器?(Trigger),当ContentObserver所观察的Uri发?生变化时,便便会触发它。触发器?分为表触发器?、?行行触发器?,相应地ContentObserver也分
为“表“ContentObserver、“?行行”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。
请描述?一下?广播BroadcastReceiver 的理理解
1. 是四?大组件之?一,主要?用于接收app发送的?广播
2. 内部通信实现机制:通过android系统的Binder机制.
?广播的分类
?无序?广播优点:完全异步,逻辑上可被任何接受者收到?广播,效率?高缺点:接受者不不能讲处理理结果交给下?一个接受者,且?无法终?止?广播.
有序?广播按被接收者的优先级循序传播 A>B>C,每个都有权终?止?广播,下?一个就得不不到每?一个都可进?行行修改操作,下?一个就得到上?一个修改后的结果.
?广播使?用的?方式和场景
开机启动,sd卡挂载,低电量量,外拨电话,锁屏等
?比如根据产品经理理要求,设计播放?音乐时,锁屏是否决定暂停?音乐.
在manifest 和代码中如何注册和使?用BroadcastReceiver
1. 静态?广播:
i. 1.?一个app?里里:?自定义?一个类继承BroadcastReceiver然后要求重写
onReveiver?方法
ii. 清单?文件注册,并设置Action,就那么简单完成接收准备?工作
2. 动态注册:
i. 在和?广播接受者相同的app?里里的MainActivity添加?一个注册按钮,?用来注册?广
播接收者
ii. 设置意图过滤,添加Action 3.销毁的时候取消注册
两个app都运?行行之后:
静态注册的?方法:另?一app直接发?广播就收到了了
动态注册的?方法:?自?己的app先代码注册,然后另?一个app直接发?广播即可.
3. BroadCastReceiver的?生命周期
i. 只有?一个onReceiver,相当的短暂,?方法完成后?广播接受者就销毁,发送?一次
调?用?一次
ii. 接受者不不要做耗时操作,否则出现ANR
iii. 也不不要开启?子线程进?行行耗时操作,因为?生命周期结束后整个进程就变进程了了,容易易被系统杀掉
iv. 耗时较?长的?工作最好放在服务?里里.
本地?广播和全局?广播有什什么差别?
发送的?广播只会在?自?己App内传播,不不会泄露露给其他App,确保隐私数据不不会泄露露
其他App也?无法向你的App发送该?广播,不不?用担?心其他App会来搞破坏
?比系统全局?广播更更加?高效
AlertDialog,popupWindow,Activity 区别
Android中的对话框有两种:PopupWindow和AlertDialog。它们都可以实现弹窗功能,但是他们之间有?一些差别,下?面总结最重要的?一点。(其他区别不不重要)
AlertDialog是?非阻塞式对话框:AlertDialog弹出时,后台还可以做事情;
?而PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序?一直等待,只有当我们调?用了了dismiss?方法的后,PopupWindow退出,程序才会向下执?行行。
Application 和 Activity 的 Context 对象的区别
这是两种不不同的context,也是最常?见的两种.第?一种中context的?生命周期与Application的?生命周期相关的,context随着Application的销毁?而销毁,伴随application的?一?生,与activity的?生命周期?无关.第?二种中的context跟Activity的?生命周期是相关的,但是对?一个Application来说,Activity可以销毁?几次,那么属于
Activity的context就会销毁多次.?至于?用哪种context,得看应?用场景,个?人感觉?用Activity的context好?一点,不不过也有的时候必须使?用Application的
context.application context可以通过 Context.getApplicationContext或者Activity.getApplication?方法获取.
1. 不不要让?生命周期?长的对象引?用activity context,即保证引?用activity的对象要与
activity本身?生命周期是?一样的
2. 对于?生命周期?长的对象,可以使?用application context
3. 避免?非静态的内部类,尽量量使?用静态类,避免?生命周期问题,注意内部类对外
部对象引?用导致的?生命周期变化
Android属性动画特性
改变属性
如何导?入外部数据库?
1. 拷?贝到资源?目录(assets)下
2. 然后就把数据库写到?文件中(这?里里我写到了了sd卡中,也可以写到/data/data/包
名/databases/)
LinearLayout、RelativeLayout、FrameLayout的特性及对?比,并介绍使?用场景。
https://https://www.360docs.net/doc/e19866881.html,/kf/201609/547628.html
1. RelativeLayout会让?子View调?用2次onMeasure,LinearLayout 在有weight时,
也会调?用?子View2次onMeasure
2. RelativeLayout的?子View如果?高度和RelativeLayout不不同,则会引发效率问题,
当?子View很复杂时,这个问题会更更加严重。如果可以,尽量量使?用padding代替
margin。
3. 在不不影响层级深度的情况下,使?用LinearLayout和FrameLayout?而不不是
RelativeLayout。最后再思考?一下?文章开头那个?矛盾的问题,为什什么Google给开发者默认新建了了个RelativeLayout,?而?自?己却在DecorView中?用了了个
LinearLayout。因为DecorView的层级深度是已知?而且固定的,上?面?一个标题栏,下?面?一个内容栏。采?用RelativeLayout并不不会降低层级深度,所以此时在根节点上?用LinearLayout是效率最?高的。?而之所以给开发者默认新建了了个
RelativeLayout是希望开发者能采?用尽量量少的View层级来表达布局以实现性能最优,因为复杂的View嵌套对性能的影响会更更?大?一些。
4. 能?用两层LinearLayout,尽量量?用?一个RelativeLayout,在时间上此时
RelativeLayout耗时更更?小。另外LinearLayout慎?用layout_weight,也将会增加?一倍耗时操作。由于使?用LinearLayout的layout_weight,?大多数时间是不不?一样的,这会降低测量量的速度。这只是?一个如何合理理使?用Layout的案例例,必要的时候,你要?小?心考虑是否?用layout weight。总之减少层级结构,才是王道,让
onMeasure做延迟加载,?用viewStub,include等?一些技巧。
谈谈对接?口与回调的理理解,回调的原理理,写?一个回调demo
介绍下SurfView
SurfaceView就是在Window上挖?一个洞洞,它就是显示在这个洞洞?里里,其他的View是显示在Window上,所以View可以显示在 SurfaceView之上,你也可以添加?一些层在SurfaceView之上。(例例如在上?面设置?一些按钮控件)我们知道View的更更新只能在UI线程中,所以使?用?自定义View没办法这么做,但是SurfaceView就可以了了。它?一个很好?用的地?方就是允许其他线程(不不是UI线程)绘制图形(使?用Canvas),根据它这个特性,你就可以控制它的帧数,你如果让这个线程1秒执?行行50次绘制,那么最后显示的就是50帧。(?一般使?用thread.sleep(20);代表?一秒刷新50次) SurfaceView 能够?自?己控制执?行行帧数的对象,这样可以弥补View的不不?足,因为有时候View的帧数太低了了,这会导致画?面效果不不顺畅,影响体验效果。本质区别:
View:必须在UI的主线程中更更新画?面,?用于被动更更新画?面。
surfaceView:UI线程和?子线程中都可以。在?一个新启动的线程中重新绘制画?面,主动更更新画?面。
RecycleView的使?用
序列列化的作?用,以及Android两种序列列化的区别
Serializable和Parcelable接?口可以完成对象的序列列化过程,当我们需要通过Intent和Binder传输数据时就需要使?用者两种序列列化?方式。还有,我们需要对象持久化到存储设备或者通过?网络传输给其他客户端,这个使?用也需要使?用Serializale来完成对象的序列列化。在Android应?用开发中,这两种?方式都很常?见,但两者?方式并不不相同。
1. Serializable接?口 Serializable接?口是Java提供的?一个序列列化接?口,它是?一个空
接?口,为对象提供标准的序列列化和反序列列化操作。使?用Serializable来实现的对象的序列列化相当简单,只需要在类的?生命中指定?一个类似相?面的标识即可?自动实现默认的序列列化过程。
2. Parcelable接?口 Parcelable接?口是Android SDK提供的?一种专?门?用于Android应
?用中对象的序列列化和反序列列化的?方式,相?比于Seriablizable具有更更好的性能。
实现Parcelable接?口的对象就可以实现序列列化并可以通过Intent和Binder传递。
差值器?
估值器?
Android开发入门教程经典解析-JAVA语言
Android入门教程之Java核心技术阶段初级课程,从知识分类来说,可以分为三个部分来说明: (一)基础语法: 讲解Java发展史,Java环境搭建,环境变量配置,Java程序的基本结构,java和javac命令的使用,Notepad++工具的使用,语法格式,变量和常量,二进制转换,运算符、表达式,分支结构和循环结构语句,数组与多维数组,冒泡排序,二分查找,随机生成一组不重复的数算法,通过模拟一个双色球案例,把基础语法容融会贯通,打下扎实的基础。 (二)面向对象: 讲解Java中的OOP/OOD/OOA的知识,深入讲解OOP的封装、继承、多态、抽象的概念与实际应用,涉及内容为类与对象的定义和关系,封装分别在Java EE开发和Android开发中的不同,对象的引用传递,对象的内存分配和GC,构造方法和匿名对象,如何开发和定义一个类,深入讲解String类的原代码原理内部实现、特性和内存管理,通过四种字符串连接时的场景分析来深入理解Java编译期和运行期的区别,String的相关操作方法;static 关键字,构造方法私有化,对象数组与动态数组的实现原理,链表数据结构,内部类及优缺点,在EE开发和Android开发的区别和经验;继承的思想,方法重写与重载,super关键字,抽象类、接口和多态的思想,以及真实环境中的应用,Object类,包装类与特性,包与修饰符;课程贯彻的设计模式有:单例模式、工厂模式、策略模式、适配器模式、模板方法模式、代理模式。以及OO设计中的六大原则。通过本节课程你可以彻底理解什么是面向对象编程,加以时日练习,必成大器。 (三)Eclipse与异常处理 异常的基本处理格式和5大关键字的联合使用,Java中异常处理的新特性,自定义异常类,编译时异常与运行时异常的区别,JVM对异常的处理过程,经过前两节课程共两周多的Notepad++写代码,已经达到了纯手写代码的目的,本节课程开始引入了99.9%的程序员都在使用的集成开发环境Eclipse,他对异常调试的强大支持,会让你叹为观止,当然Eclipse 不仅仅只有这些,在这里,你将一一学到。 Android入门教程之Java核心技术阶段中级课程,Java基础、面向对象、Java高级开发,讲解以下内容: (一)常用类库API与算法 讲解StringBuffer类的内部原理,分析原代码实现,与String的区别与应用经验,如何实现国际化程序,日期操作API,Comparable的两种实现,对象克隆,Arrays工具类、Math 工具类、Random类的使用,选择排序算法和二叉树数据结构实现,通过本节课程,你将学到常用类库API和工作中最最常见的排序算法和二叉树,本节过后,你的功力又增强了。 (二)IO与New IO
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.360docs.net/doc/e19866881.html,yout.dialog,null); 核心API:dialog.setView(view); 4.常见的一些适配器的使用 *数组适配器:ArrayAdapter *简单适配器:SimpleAdapter 5.数据库的常见的事务 为什么需要需要定义数据库事务?最主要的还是为了保证多条操作语句同步执行 6.数据库事务执行流程 db.beginTransaction();开启事务 db.setTransactionSuccessful();设置事务执行成功 db.endTransaction();结束事务 7.样式和主题 样式的作用在单独的UI控件上面 主题的作用它是在activity或者application上 以上的这些功能控件、数据库等这些是开发中必备的功能,在开发中只要这些基本的核心知识都掌握了,那么这对你接下里的进一步开发是比较有帮助的。
Android知识体系思维导图
Android Activity Visible Fragment addview setContentView startActivity startActivityForResult requestCode ResponseCode setResult(intent, response code) onActivityResult Service start onCreate() onStartCommand() onDestroy bind onCreate() onBind() onUnbind() onDestroy ServiceConnection onServiceConnected() &!null binder onServiceDisconnected() been killed crash BroadcastReceiver XML manifest intent-filter Code registerReceiver(receiver, filter)unRegistReceiver() code sendBroadcast(intent) SendOrderedBroadcast 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; 比如:计算WVGA(800*480)分辨率,3.7英寸的密度DPI 图1 Diagonal pixel 表示对角线的像素值(=),DPI=933/3.7=252 3.手机屏幕的分类 3.1根据手机屏幕密度(DPI)或屏幕尺寸大小分为以下3类,如图2所示 图2 3. 2手机屏幕分类和像素密度的对应关系如表1所示: 图3 从以上的屏幕尺寸分布情况上看,其实手机只要考虑3-4.5寸之间密度为1和1.5的手机4 UI设计 从开发角度讲,应用程序会根据3类A ndroid手机屏幕提供3套UI布局文件,但是相应界面图标也需要提供3套,如表2所示 需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout- small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间) 2)图片资源方面 需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi Android有个自动匹配机制去选择对应的布局和图片资源 分享到:?上一篇:分享摩托罗拉milestone手机升级到Android 2.2的过程 ?下一篇:基于feng streaming server 搭建Android直播测试平台 查看评论 7楼pc0de 2011-12-16 17:11发表[回复] 谢谢分享啊 6楼yang_hui198**** ****-11-19 16:44发表[回复] 很强大!!!很喜欢!!! 3楼noICE1 2011-08-16 14:59发表[回复] 任务一 Android开发环境的搭建 第一部分知识回顾与思考 1.Android的四层架构分别包括哪几层分别起到什么作用 答:Linux内核层(Linux Kernel):基于Linux内核,内核为上层系统提供了系统服务。 系统库层(Libraries):系统库基于C/C++语言实现,通过接口向应用程序框架层提供编程接口。 应用框架层(Application Framework):为开发者提供了一系列的Java API,包括图形用户界面组件View、SQLite数据库相关的API、Service组件等。 应用程序层(Applications):包含了Android平台中各式各样的应用程序。 第二部分职业能力训练 一、单项选择题(下列答案中有一项是正确的,将正确答案填入括号内) 1.Android四层架构中,应用框架层使用的是什么语法( C ) A.C B.C++ C.Java D.Android 2.Android四层架构中,系统库层使用的是什么语法( B ) A.VB B.C /C++ C.Java D.Android 3.应用程序员编写的Android应用程序,主要是调用( B )提供的接口进行实现。 A.应用程序层 B.应用框架层 C.应用视图层 D.系统库层 二、填空题(请在括号内填空) 1.在Android智能终端中,有很多应用如拍照软件、联系人管理软件,它们都属于Android的(应用程序)层。 2.为了让程序员更加方便的运行调试程序,Android提供了(模拟器),可以方便的将程序运行其上,而不要实际的移动终端。 3.为了支持Java程序运行,我们需要安装(JDK)。 三、简答题 1.简述Android开发环境安装的步骤。 答:下载并安装JDK,配置JDK的环境变量; 从Anroid官网上下载Android开发组件(包含Eclipse和Android SDK、ADT); 安装Android开发环境(包括配置Android SDK的环境变量、打开Eclipse通过菜单设定Android SDK 路径)。 2.简述Android应用程序创建和运行的步骤。 答:通过菜单创建Android应用程序,设置应用程序名、Android版本等基本信息。 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.360docs.net/doc/e19866881.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.360docs.net/doc/e19866881.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.360docs.net/doc/e19866881.html,ng.RuntimeException: Unable to instantiate activity ComponentInfo{com.test/com.test.CanvasActivitys}: https://www.360docs.net/doc/e19866881.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方法来设置提示框文本 基本概念 为了方便后边的编程,我们第一篇文章主要是介绍一些关于OpenGLES基本的概念。点 3D图像的最小单位称为点(point)或者顶点vertex。它们代表三维空间中的一个点并用来建造更复杂的物体。多边形就是由点构成,而物体是由多个多边形组成。尽管通常OpenGL支持多种多边形,但OpenGLEs只支持三边形(即三角形)所以即使我们要绘制一个正方形也要把它拆分为两个三角形绘制。先说说坐标系的问题。 默认情况下,以屏幕中心为坐标轴原点。原点左方x为负值,右边为正值。原点上方y 为正,原点下方为负。垂直屏幕向外为z正,垂直屏幕向里为z负。默认情况下,从原点到屏幕边缘为1.0f,沿各轴增加或减小的数值是以任意刻度进行的–它们不代表任何真实单位,如英尺,像素或米等。你可以选择任何对你的程序有意义的刻度(全局必须保持单位一致,不能一部分使用米,一部分使用像素)。OpenGL只是将它作为一个参照单位处理,保证它们具有相同的距离。如图: 了解了坐标轴,我们来看看怎么在坐标系中表示一个点,通常用一组浮点数来表示点。例如一个正方形的4个顶点可表示为: 1.float vertices[] ={ 2.-1.0f,1.0f,.0f,//左上 3.-1.0f, -1.0f,.0f,//左下 4.1.0f, -1.0f,.0f,//右下 5.1.0f,1.0f,.0f,//右上 6.}; 为了提高性能,通常还需要将浮点数组存入一个字节缓冲中。所以有了下面的操作: 1.ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length *4); //申请内存 2.vbb.order(ByteOrder.nativeOrder()); //设置字节顺序,其中ByteOrder.nativeOrder()是 获取本机字节顺序 3.FloatBuffer vertexBuffer = vbb.asFloatBuffer(); //转换为float型 合肥工业大学学生自主实习报告 学号: 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 面向对象基本思想(继承) 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进 Android架构基本知识 1.2 Android的系统架构 系统构架图中可以看到从上到依次是应用层(Applications)、应用框架层(Application Framework)、系统运行库层(Lib和Runtime)、 Linux内核层(linux kernel) 1.2.1 Android内核 Linux 内核版本2.6 位于硬件和软件堆之间的抽象层 核心服务:安全机制、内存管理、进程管理、网络、硬件驱动。 Android依赖Linux内核2.6来提供核心服务,比如进程管理、网络协议栈、硬件驱动。在这里,Linux内核作为硬件层和系统软件栈层之间的一个抽象层。这个操作系统并非类GNU/Linux的,因为其系统库,系统初始化和编程接口都和标准的Linux系统是有所不同的。 从Google目前release的Linux系统来看,其没有虚拟内存文件系统,系统所用的是yaffs2文件系统,具体的映像也都位于SDK安装目录下。通过emulator -console命令,我们可以在host 终端下得到一个简单的可以控制Android的shell,这个系统包含了一个Toolbox,提供一些基本的命令工具,集中在/sbin,/system/sbin,/system/bin中,但是很简陋,命令种类也很少。若有时间和必要我会作个介绍。 既然采用的linux系统,就有必要介绍一下主要驱动(如图中所示): 显示驱动(Display Driver) 键盘驱动(KeyBoard Driver) Flash内存驱动(Flash Memory Driver) 照相机驱动(Camera Driver) 音频驱动(Audio Driver) 蓝牙驱动(Bluetooth Driver) Wifi驱动 Binder IPC驱动 Power Management (电源管理)等等。 1.2.2程序库和运行库(Lib和Runtime) 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.1课程在相关专业中的性质与定位 Android应用开发是物联网应用技术专业(应用开发方向)的核心课程之一,是Android应用程序开发方法的主要课程,是Android应用的主要领域。为了适应高职学生的学习情况,该课程以Android应用技术为重点,逐步阐述Android 应用体系结构,介绍Android应用常见的几个功能。采用项目+案例教学法,既让学生掌握Android的基本知识,同时,也让学生在潜移默化中了解一些Android 的高级开发技术,从而为今后实现Android应用开发打下基础。 本课程的任务是使学生通过学习和操作实践,了解和掌握Android的主流应用技术及其开发方法,掌握Android的sdk、Activity、高级UI、网络、多媒体体方面的编程技术。为进一步学习移动互联工程师后续课程打下良好的理论和实践基础。 1.2 本课程的基本教学理念 (一)突出学生主体,注重技能培养,回归能力本位 Android应用开发是移动互联工程师的专业核心课程,注重软件开发基本理论、基本方法和基本技能的学习及素质教育,激发学生的学习兴趣,在启发、提示下使其自主地、全面地理解软件的基本理论和基本方法,提高学生的思维能力和实际操作技能,增强他们理论联系实际的能力,培养学生的创新精神,使学生养成观察、独立分析和解决问题的习惯;以提高技能、磨砺意识、活跃思维、展现个性和拓宽视野。 (二)尊重个体差异,注重过程评价,促进学生发展 本课程在教学过程中,倡导自主学习,启发学生对设定问题积极思考、分析, 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、RatingBarAndroid应用开发基本知识点汇总
Android手机分辨率基础知识(DPI_DIP计算)
Android应用开发基础习题集
复习材料《Android移动应用开发技术》
ANDROID实训心得体会
Android期末复习题总结
ANDROID OPENGL ES 基础知识(基本概念)
Android实习报告
android开发需要掌握的知识点
Android架构基本知识
Android面试基础知识总结
《Android应用开发》课程标准
android应用开发技术复习资料