老师面试题讲解四大组件之一,一般的一个用户交互界面对应activit_第1页
老师面试题讲解四大组件之一,一般的一个用户交互界面对应activit_第2页
老师面试题讲解四大组件之一,一般的一个用户交互界面对应activit_第3页
老师面试题讲解四大组件之一,一般的一个用户交互界面对应activit_第4页
老师面试题讲解四大组件之一,一般的一个用户交互界面对应activit_第5页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

setContentView(),//要显示的布局}activityContextwindow.callbackkeyevent.callback,处理与窗体用户交互的.我开发常用的的 FragmentActivitiy, PreferenceActivity,TabAcitivty进度框的显示与销Activity生命周期描述的是一个类从创建(new出来)到(回收)的过程中会执行的方法..在这个过程中会针对不同的生命阶段会调用不同的方法Activity这些回调方法包括:oncreateondestroyonstoponstartonresumeonpause6onRestartActivityonStoponDestroyActivityonRestart(onCreate)方法;最后讲自己项目中的经验,比如说卫士每次进入某个界面的时候都要看到的数据,这个刷新列表的操作就放在onStart()的方法里面.这样保证每次用户看到的数据都是最多, .onStop(),声音设置为0,记录的位mediaonStart()根据保存的状态恢复现场.mediaactivityonPostResume()和OnPostCreate()这activityA,B,当在AB组件的时候,A会调用onPause()BonCreate(),onStartOnResume()这个时候B覆盖了窗体,A会调用onStop()方法. 如果B呢是个透明的,或者是框的样式,就不会调用onStop()方法activity,然后重新加载游戏开发中,屏幕的朝向都是写死的.Activityactivity你的Activity被系统回收怎么办?如果的Activity由于某原因被系统回收除了在栈顶的activity,其他的activityprotectedvoidonSaveInstanceState(BundleoutState){ }publicvoidonCreate(BundlesavedInstanceState)savedInstanceState}activityfinishbackactivityonDestroy(该方法通过抛异常,使程序Close验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Close的窗口//安全结束进程android.os.Process.killProcess(android.os.Process.myPid());2Activity:List<Activity>listsapplicationlists=newArrayList<Activity>();for(Activityactivity:{}Activity//给某个activity接受接受广播的意registerReceiver(receiver,//如果过接受到的是关闭activity的广播 就调用finish()方法把当前的activity4在打开新的Activity时使用startActivityForResult,然后自己加标志,在intentflag来实现..intent.setFlag(FLAG_ACTIVITY_CLEAR_TOP)激activity,activity的oncreatefinishservicemainthreadserviceappmainthread(UIservice在子线程中执行newThread(){}.start();特殊情况,可以在文件配置service执行所在的进程,让service在另外的进程中执基本数据类型可以通过.Intentextras.putDouble(key,value)intent.putExtra(name,value)通过intentputExtraBundlebundle=newBundle();bumdle.putShort(key,value);Applicationapplicationapplicationactivity让对象实现 Serializable接口把对象存放到文件上让类实现Serializable接口,然后可以通过ObjectOutputStream Filefile=newFileOutputStreamfos=newFileOutputStream(file);ObjectOutputStreamoos=newObjectOutputStream(fos);Studentstu=newStudent();ObjectInputStreamois=newObjectInputStream(arg0);Studentstu1=(Student)ois.readObject(); //大的传递activityonCreate()方法里面startService(); activityintentflagIntentflagFLAG_ACTIVITY_NEW_TASKactivitytaskIntentintent=newIntent(A.this,B.class);startService()一旦被创建调用着无关 没法使用service里面的方法bindService()把service与调用者绑定,如果调用者被销毁,service会销毁bindService()我们可以使用service里面的方法 让activity能够到service里面的方法intentIntentservice=newbindServicebindService(intent,newMyConn(),BIND_AUTO_CREATE);ServiceConnectiononServiceConnectedOnServiceDisconnectedBIND_AUTO_CREATE.privateclassmyconnimplements{publicvoidonServiceConnected(ComponentNamename,IBinderservice)//TODOAuto-generatedmethodIBinderservice}publicvoidonServiceDisconnected(ComponentNamename)//TODOAuto-generatedmethod}}Service?ServiceActivityonCreate,onStart,ServiceonCreateonStart,然后处于运行状态,stopServiceService起。调用者退出了,SreviceonUnbind->onDestroyedSreviceonUnbind->onDestroyed—个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的如果先是bindstartServiceonStartstart,bindonBindserviceserviceonBindunbindService不用service,B页面为音乐,从A跳转到B,再返回,如何使音乐继续?这个问题问的很山寨.默认不做任何处理,B里面的音乐都能.遇到问题,startActivityForResultA开启B的时候,用startActivityForResult()方法,B返回的时候把的状态信息返回给A,A继续音乐.serviceuimainOnHandleIntent()处理耗时的操作Service?startForeground(id,notification)文档告诉我们,Android系统会尽量保持拥有service的进程运行,只要在该service如果service正在调用onCreate, 当前service的进程相当于前台进程以避免被killed。servicekilled.service(bindService)ServiceserviceservicestartForeground(int,Notificationservicekilled。servicebind,create.IntentIntentFilterAndroid中通过Intent对象来表示一条消息,一个Intent对象不仅包含有这个消IntentIntentfilter:3Action:动作 Data:数据uri Category:而外的附加信息Action匹配Action是一个用户定义的字符串,用于描述一个Android应用程序组件,一个IntentFilter可以包含多个Action。在AndroidManifest.xml的Activity定义时可以在其<intent-filterActionActivity<intent-filter<actionandroid:name="ent.action.MAIN"<actionandroid:name="cn..action"ActivityIntentIntentintent=newIntent();intent.setAction("cn..action");那么所有的Action列表中包含了“cn.”的Activity都将会匹配成功Android预定义了一系列的Action分别表示特定的系统动作。这些Action通过常量的android.content.Intent“ACTION_”开头。我们可以在Android提URI一个Intent可以通过URI携带外部数据给目标组件。在<intent-filter>节点中,通过<data/>节点匹配外部数据。mimeType,scheme,host、port、path<dataandroid:mimeType="mimeType"android:scheme="scheme"android:host="host"android:port="port"android:path="path"/>的uri :12345自己定义的 . 如果在IntentFilter中指定了这些属性,那么只有所有的属性都匹配成功时URI数据Category<intent-filter>节点中可以为组件定义一个Category类别列表,当Intent中包含这个列表的所有项目时Category类别匹配才会成功。Intent一般的基本数据类型Intent.putextra()uri,intent.setData()Activity,Intent,Service麦当劳和的关系是什么关系?activityservice,intent说自己项目中有这样一个网络更新的功能,显示界面就用的activity,有service每隔半小时都去下服务器获取更新的数据…intentBroadcastReceiver指定接收者的广播.是不可以被掉<intent-filter<actionandroid:name="vider.用于接收系统的广播通知,系统会有很多sd卡挂载,重启,广播通知,低电量,来电,来broadcast android:><action>sms_received 来获取到来的广播,根据来判断是否该画画板生成后,发送一个sd挂载,通知系统的gallery去获取到新的.Intentintent=new在manifest和代码中如何和使用broadcastreceiver。action<intent-filter<action<receiver<intent-filter<actionandroid:name="vider.</intent-<receiver <intent-filter<action PLETED"</intent-uriandroidpublicclassContentProviderextendsContentProvider{publicbooleanonCreate(){}query(Uri,String[],String,String[],String)insert(Uri,ContentValues)update(Uri,ContentValues,String,String[])delete(Uri,String,String[])}请介绍下Android的数据方式文件权限 sdcard数据库 网 sockettcpudp,http数据的细节,对用户透明,用户只需要关心操作数据的uri就可以了app但是contentprovider还可以去增删改查本地文件.xml文件的,更改网络数据更FrameLayout(帧布局,LinearLayout(线性布局,Absolu ,TableLayout(从屏幕的左上角开始布局,叠加显示,实际应用器的暂停按钮LinearLayout div指定了absoluteX,Yqq主qq游戏大厅800*480800*480.apk 指定平板机型的游戏开发中经常用到绝对布局widget绝对布局指定机型的平板游戏开发机顶盒开发。.2.33.0界面布 任务管理器任务管理listviewandroid:layout_below="@id/aaa"idaaaandroid:layout_toLeftOf="@id/bbb"android:layout_alignParentLeft="true"在父元素左对齐android:layout_alignParentRight="true"TableLayout里面可以具体定义每一个元素,设定他的对齐方式android:gravity=""oacssdivUIPaddingMarginPaddingmarginbutton,imageviewonmeasure()viewondrawMessage、Handler、MessageQueue、LooperAndroidinterfacedefinitionlanguage(androidday7queryStudent卫士Iephony接口挂 Android程序执行需要到安全敏感项必需在androidmanifest.xml中相关权限请求,打 ,网络,获取坐标,读写sd卡,读写联系人等..安装的时候会提示用户…文件系统的权限是linux权限.比如说sharedpreference里面的Context.Mode.private 777系统上安装了多种浏览器,能否指定某浏览器指定页面?URI,激活这个意图Intentintent=newIntent();intent.setClassName(packageName,className);对android虚拟机的理解,包括内存管理机制回收机制。虚拟机很小,空间很小,谈谈移动设备的虚拟机的大小限制16M,谈谈加载的时候怎么处理大的,d回收,没有的对象,在某个时刻会被系统gc掉反射,配置文件可以讲下activity的源码,比如说每个activity里面都有window.callback和activityActivity创建一个view是通过ondraw画出来的,画这个view之前呢,还会调用android本身的一些限制,比如apk包大小限制,大文件时的时间限。这个问题问的有问题,apk飞车有100M还是能装到上世面market上大程序主程序很小5~10M sdcard15分钟之内申请退款apkActivity5Service20Androidmediascanner,mediaStorecontentprovider分批加载数据,延时加载数据,合理使用缓存等...convertviewview减少子孩子查询的次数viewholderview AndroidJavaAndroidandroidsdk,javajavasdkAndroidSDK了大部分的JavaSDK,少数部分被AndroidSDK抛弃,比如说界面部分,java.awtswingpackage除了java.awt.font被外,其他都被抛弃,在Android平台开发中不能使用。androidsdk添加工具jarhttp,pull 将Java游戏或者j2me程序移植到Android平台的过程中, SDK与JavaSDK的区别是很需要注意的地方。首先我们来看下Task的定义,是这样定义Task的:ataskiswhattheuserexperiencesasan"application."It'sagroupofrelatedactivities,arrangedinastack.Ataskisastackofactivities,notaclassoranelementinthemanifestfile.这意思就是说Task实际上是一个Activity栈,通常用户感受的一个ActivityActivitytask将跑到栈顶的Activity来于用户面对面,直至栈中再无Activity,Task结束。点开应用,进入收件箱(ActivityA选中一封邮件,点击查看详情(Activity点击回复,开始写新邮件(Activity人界面(ActivityD)A退出程涉及到实际的性能、开销等问题,就会变得许多。Task浏览器,这将是一个多么的场面,十个Task栈都堆积着很雷同的浏览器Activity,standard","singleTop"singleTask","singleInstance"standardTask更避免了一些奇异的行为(Activity,再一级(BrowserBookmarkPagBrowser...singleTasksingleInstance显得更为一些。在大部分时候singleInstance与singleTask完全一如果涉及到的其他Activity,都移交到其他Task中进行。这使得singleInstance的AndroidActivity,在我个人的工程实践中,曾尝试在有Activityapkactivity时就先去找有没有activity2.affinity合理设置变量的作用范围 application对不同工程中的方法是否可以相用?可以,列举aidl服务的例子. 的状态,去电,来电、未接来电Day8dvmLinux每个android程序系统都会给他分配一个单独的liunx uid(userid),simEFsdenvironmentif(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))页式,段式,段页,等…Androidandroidlinux一条最长的息约占多少中文70(包括标点),英文160,160个字节这个说法确,ArrayList<String>msgs=sms.divideMessage(message);for(Stringmsg:msgs){sms.sendTextMessage(phoneNumber,null,msg,pi,}Linuxlinux(namedpipe)semophore问它常作为一种锁机制防止某进程正在共享资源时其他进程也该资源因此,messagequeue#信号(sinal):信号是一种比较复杂的通信方式,用于通知接收进程某个已经#共享内存(sharedmemory):共享内存就是映射一段能被其他进程所的内存,这段共享内存由一个进程创建,但多个进程都可以。共享内存是最快的IPC方式,它是针socketAndroidNDKnativedevelopkit只是一个交叉编译的工具ndk,实时性要求高,游戏,图形渲染,opencvffmpegrmvbmp5avi.ffmpeg,opencore.ndk,ndk1、开放性,开源ophone 阿里云(完全兼容android)3mtkandroid5、无缝结合的应52、卖的不是最大运营3、运营商对Android仍然有影Android系统中GC什么情况下会出现内存呢?编/内存检测内存工具 的设为null,因为一个方法执行完毕时,这些会自动被清理。Vectorv=newfor(inti=1;i<100;i++) Objecto=newObject();o=Java内存的根本原因就是保存了不可能再被的变量类型AndroidUIView在主线拿到view调用Invalide()方法,查看画画板里面更新imageview的方法postInvalide()方法;Viewview;AndroidAndroid同一个开发者的多个程序尽可能使用同一个数字,这可以带来以下好处有利于程序升级,当新版程序和旧版程序的数字相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字不相同,则Android系统认为他们是不同的程序,并产生,会要求新程序更改包名。有利于程序的模块化设计和开发。Android在签名时,需要考虑数字的有效期如果多个程序使用同一个数字,则该数字的有效期要包含所有程序的预计生命AndroidMarket强制要求所有应用程序数字的有效期要持续到2033年10月22日Android数字包含以下几个要点Android程序包使用的数字可以是自签名的,不需要一个的数字机构签名如果要正式发布一个Android,必须使用一个合适的私钥生成的数字来给程序签名,而不能使用adt插件或者ant工具生成的调试来发布。如果程序已经安装在系统中,即使过期也不会影响程序的正常功能。ANRAndroid框,这个框称作应用程序无响应(ANR:ApplicationNotResponding)框。用户ANRActivity5 broadcast10耗时的操作workerthreadhandlermessage…AsynTask,TweenFrameTween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生的变化;1 2LayoutView另一种Frame动画,传统的动画方法,通过顺序的排列好的来实现,类似属性动画IDsetContentView(),就指定了以哪个视图模型显示数据。ListViewListAdapterListViewurlDay11AddJavascriptInterfacenewObject{}默认情况同一线程mainui65,javasoftreferenceStrongReference是Java的默认实现,它会尽可能长时间的存活于JVM内,当没有任何对象指向它时GC执行后将会被回收SoftReference会尽可能长的保留直到JVM内存不足时才会被回收(虚拟机保证),这一特性使得SoftReference非常适合缓存应用详细见客户端的缓tcp/滑动窗口协议.拥塞控制 面向连接udp不关心数据是否达到,是否阻 画面优先.流畅优 67,androidlogcat,catlspspswwcmvrmcdtracertfindgreptailvigccmakeifconfigstartupdhcp70JNIJNIEnv*env,jobject 结android.jarddmstraceviewdaivilkdebugmanagersystemactivityonCreateDebug.startMethodTracing("要生成的traceview重新编译,安装,启动服务,测试完成取对应的traceview文件(adb/sdcard/xxxx.trace)xxxxtracetraceviewKPIkeyperformanceinformation从ssh界面加载mainactivity过0.7Android1.5Android1.52.1下(2.1)的版本:受限支持。traceSD卡,Android2.2上(2.2)SD卡,不用在程序中加代码,直DDMSTraceview。重构前的代码packageimportimportandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importimportandroid.widget.Button;importandroid.widget.EditText;importpublicclassBmiextendsActivity/**Calledwhentheactivityisfirstcreated.*/publicvoidonCreate(BundlesavedInstanceState){//ListenforbuttonButtonbutton=(Button)findViewById(R.id.submit);}privateOnClickListenercalcBMI=newOnClickListener(){publicvoidonClick(Viewv)DecimalFormatnf=newDecimalFormat("0.00");EditTextfieldheight=(EditText)EditTextfieldweight=(EditText)doubleheight=Double.parseDouble(fieldheight.getText().toString())/100;doubleweight=doubleBMI=weight/(height*TextViewresult=(TextView)result.setText("YourBMIis"+//GivehealthTextViewfieldsuggest=(TextView)if(BMI>25)}elseif(BMI<20){}else}}}//privateButtonbutton_calc;privateEditTextfield_height;privateEditTextfield_weight;privateTextViewview_result;privateTextViewview_suggest;privatevoidfindViews()button_calc=(Button)findViewById(R.id.submit);field_height=(EditText)findViewById(R.id.height);field_weight=(EditText)findViewById(R.id.weight);view_result=(TextView)findViewById(R.id.result);view_suggest=(TextView)findViewById(R.id.suggest);}//ListenforbuttonprivatevoidsetListensers(){}publicvoidonCreate(BundlesavedInstanceState){}Step3:修改按钮器calcBMI中相应的部分(主要是变量已经在视图部分定义privateOnClickListenercalcBMI=newOnClickListener(){publicvoidonClick(Viewv)DecimalFormatnf=newdoubleheight=Double.parseDouble(field_height.ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论