android系统原理及开发要点详解等多个文件-豆瓣项目面试题_第1页
android系统原理及开发要点详解等多个文件-豆瓣项目面试题_第2页
android系统原理及开发要点详解等多个文件-豆瓣项目面试题_第3页
android系统原理及开发要点详解等多个文件-豆瓣项目面试题_第4页
android系统原理及开发要点详解等多个文件-豆瓣项目面试题_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

activitysetContentView(),//要显示的布局activityContextwindow.callbackkeyevent.callback}ListActivity,PreferenceActivity,TabAcitivtyBaseActivity.进度框的显示与销毁Activity生命周期描述的是一个类从创建(new出来)到(回收)的过会执行的方法..在这个过会针对不同的生命阶段会调用不同的方法Activity这些回调方法包括:oncreateondestroyonstoponstartonresumeonpause其实这些方法都是两两对应的,onCreateonDestroyonStartonStop;onResume(即焦点)onPause;框的弹出,Activity.this这6onRestrtActivty被nStopnDestroyAcivity就调用onRetartonCreae)onStart()的方法里面.fillData()这样保证每次用户看到的数据都是的 ,来.onStop(),声音设置为0,记 的位onStart()在读文档的时候还发现activity还有两个方法onPostResume()和OnPostCreate()这activity,A,BABAonPause()BonCreate(),onStart(OnResume这个时候B覆盖了窗体,A会调用onStop()方法.如果B呢是个透明的,或者是框的onStop()方法Activity1Activityandroid:configChangesactivity,然后重新加载Onpauseonstopondestoryoncreateonstart2Activityandroid:configChanges="orientation|keyboardHidden"时,切屏不onConfigurationChanged你的Activity被系统回收怎么办?如果的Activity由于某原因被系统回收可除了在栈顶的activity,其他的activityprotectedvoidonSaveInstanceState(BundleoutState){ }publicvoidonCreate(BundlesavedInstanceState)savedInstanceState}activityfinishbackactivityonDestroy()ForceClose//安全结束进程android.os.Process.killProcess(android.os.Process.myPid());2Activity:List<Activity>listsapplicationlists=newactivityoncreate()lists.add(this);Ondestory()lists.remove(this);for(Activityactivity:{}//给某个activity接受接受广播的意registerReceiver(receiver,//如果过接受到的是关闭activity的广播就调用finish()方法把当前的activity4Activity时使用startActivityForResult404servicemainthreadserviceappmainthread(UI在子线执行new特殊情况,可以在文件配置service执行所在的进程<serviceandroid:process="cn.基本数据类型可以通过.Intentextras.putDouble(key,value)intent.putExtra(name,value)通过intentputExtraBundlebundle=newBundle();bundle.putShort(key,value);获取到激活他的Intentintent=Bundlebundleintent.getExtras();Bundle类似map的集合ApplicationapplicationapplicationactivityimplementsSerializable让类实现Serializable接口,然后可以通过ObjectOutputStream Filefile=newFile("c:\\1.obj");FileOutputStreamfos=newFileOutputStream(file);ObjectOutputStreamoos=newStudentstu=newStudent();FileInputStreamfis=newFileInputStream(file);ObjectInputStreamois=newObjectInputStream(fis);Studentstu1=(Student)ois.readObject();ParcelableParcelableandroidUri.fromFile();//大的传activityonCreate()方法里面startService();ActivityTaskactivityintentflagsingleinstance单独的任务栈activitytaskIntentintent=newIntent(A.this,B.class);Activity怎么和service绑定,怎么在activity中启动自己对应的service?startService()一旦被创建调用着无关 没法使用service里面的方法bindServiceserviceservicebindServiceservicebindService().让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->onDestroyedunbindServiceSreviceonUnbind->onDestroyed—个原则是Service的onCreate的方法只会被调用一次,就是你无论多少次的如果先是bindstartServiceonStartstart,bindonBind如果service运行期间调用了bindService,这时候再调用stopService的话,service是不会调用onDestroy方法的,service就stop不掉了,只能调用UnbindService,service如果一个service通过startServicestart之后多次调用startServiceserviceserviceservicebindServicestartbindService,serviceonBind不用service,B页面为音乐,从A跳转到B,再返回,如何使音乐继续?这个问题问的很山寨.默认不做任何处理,B里面的音乐都能.A开启B的时候,用startActivityForResult()方法,B返回的时候把的状态信息返回给A,A继续音乐.serviceuimainSdk给我们提供的方便的,带有异步处理的service类, OnHandleIntent()处理耗时的操作文档告诉我们,Android系统会尽量保持拥有service的进程运行,只要在该serviceservice如果service正在调用onCreate, 前service的进程相当于前台进程以避免被killed。service(start),拥有它的进程则比那些用户可见的进程优先级servicekilled.service(bindServiceServiceserviceservicesetForeground(true);servicekilled。如果有其他的应用组件作为Service,Activity等运行在相同的进,那么将会增加该进Service的特点可以一直运行,可以在service里面创建线程去完成耗时的操作.天气预报widgetTimerTaskTimertimertaskBroadcastreceiverservicebind,create.IntentIntentFilterAndroidIntentIntentIntentIntent可以实现各种系统组件的调用与激活.Intentfilter:3Action:动作 Data:数据uri urimimeCategory:而外的附加信息ActionAction是一个用户定义的字符串,用于描述一个Android应用程序组件,一个IntentFilter可以包含多个Action。在AndroidManifest.xml的Activity定义时可以在其<intent-filterActionActivity<intent-filter<actionandroid:name="ent.action.MAIN"<actionandroid:name="cn..action"</intent-ActivityIntentIntentintent=newIntent();那么所有的Action列表中包含了“cn.”的Activity都将会匹配成功AndroidActionActionandroid.content.Intent“ACTION_”AndroidURIIntentURIintent-filtermimeTypescheme,host、port、path<dataandroid:mimeType="mimeType"android:scheme="scheme"android:host="host"android:port="port"android:path="path"/>的uri :12345 自己定义的 IntentFilterURICategory<intent-filterCategoryIntent列表的所有项目时Category类别匹配才会成功。一般的基本数据类型Intent.putextra()uri,intent.setData()Activity,Intent,Service说自己项目中有这样一个网络更新的功能,显示界面就用的 有intentBroadcastReceiver。广播android指定接收者的广播.是不可以被掉<intent-filterandroid:priority="1000">uid<actionandroid:name="vider.onReceive()sendOrderedBroadcast(intentreceiverPermissionresultReceiver,scheduler,initialCode,initialData,initialExtras);resultReceiver广播接受者如果我们显示的指定了广播接收者abortBroadcastsendStickyBroadcast(intent)//用于接收系统的广播通知,系统会有很多sd卡挂载 broadcast<intent-filterandroid:><action>sms_received</action></intent-来获取到来的广播,根据来判断是否该画画板生成后,发送一个sd挂载,通知系统的gallery去获取到新的.Intentintent=new在manifest和代码中如何和使用broadcastreceiver。action<intent-filter<action<receiver<intent-filter</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[])}content://技巧:1.2.文件权限. /data/data/包名/files 数据库SharedPreference<data>/<data>/包名 网络sockettcp面向连接打udp平信udp,httphttpurlconnectionAndroidhttpclientpostftpfiletransport数 但是contentprovider还可以去增删改查本地文件.xml文件的,更改网络数据更,LineaLayout,Absolu,TableLayout(从屏幕的左上角开始布局,叠加显示,实际应 LinearLayoutAbsolu绝对布局犹如div指定了absolute属性,用X,Y坐标来指定元素的位置qq主qq游戏大厅800*480800*480.apkfwvga854*480指定平板机型的游戏开发中经常用到绝对布局widget指定机型的平板游戏开发.2.33.0androidsip开发网络sessionsetupprotocol2.3支持Android3.03.14.0界面布局任务管理器任务管理listviewandroid:layout_below="@id/aaa"idaaaandroid:layout_alignParentLeft="true"在父元素左对齐在父元素右对齐TableLayoutandroid:gravity=""oacssdivUIPaddingMargin 文字对边框 是控件与控件之间的距widgetactivitybutton,imageviewonmeasure()viewondrawActivityAndroidinterfacedefinitionlanguage(android的服务的方法.如何工作卫士的程序锁卫士Iephony接口挂断Android程序执行需要到安全敏感项必需在androidmanifest.xml中相关权限请求,打,网络,获取坐标,写sd卡,读写联系人等..安装的时候会提示用户…-rw------私限-rw-rw-rw-全局可读可写linux系统的文件权文件系统的权限是linux权限.比如说sharedpreference里面的Context.Mode_private 777root是的行Intent.setAction(VIEW)URIIntentintent=new//com.android.browser/.BrowserActivity"com.android.browser.BrowserActivity");;androidui对android虚拟机的理解,包括内存管理机制回收机制。16M回收,没有的对象,或者是离开作用空间,在某个时刻会被系统gc掉.System.gc();不是立刻去执行 Moblietv30030K频道.icongallery电视.点播.Onstop()通知gc();别的界面白板.bug,won'tFrameworkActivityview反射,配置文件可以讲下activity的源码,比如说每个activity里面都有window.callback和activityActivity创建一个view是通过ondraw画出来的,画这个view之前呢,还会调用Surfaceviewopenglandroid本身的一些限制,比如apk包大小限制,大文件时的时间限。这个问题问的有问题,apk飞车有100M还是能装到上apk世面market上大程序主程序很小5~10M sdcard15分钟之内申请退款apkmain5Broadcast10Service20 sdMp3作者信息专辑歌词信息id3id3v1Androidmediascanner,mediaStorecontentprovider分批加载数据,延时加载数据,合理使用缓存等...Javajavaclassconvertviewview异步加载数据,Staticclassview客户端和服务器协同.HttpIf-modify-since:检查数据是否更新1.html2001年302activitymanifestactivitytaskintentflagAndroidandroidsdk,javajavasdkAndroidSDK了大部分的JavaSDK,少数部分被AndroidSDK抛弃,比如说界面部分,java.awtswingpackage除了java.awt.font被外,其他都被抛弃,在Android平androidsdkjarhttpclientpull将Java游戏或者j2me程序移植到Android平台的 AndroidSDKJavaSDK1.6httpUrlconninglast-modified首先我们来看下Task的定义,是这样定义Task的:ataskiswhattheuserexperiencesasan"application."It'sagroupofrelatedactivities,arrangedinastack.Ataskisastackofactivities,notaclassoranelementinthemanifestfile.TaskActivityApplication就是一个Task这个定义来看Task跟Service或者其他Components是没有任何联系的,ActivityActivitytask后驱关联,新加入的Activity组件,位于栈顶,并仅有在栈顶的Activity,才会有机会与用户进行交互。而当栈顶的Activity完成使命退出的时候,Task会将其退栈,并让下一个将跑到栈顶的Activity来于用户面对面,直至栈中再无Activity,Task结束。Task栈(粗体为栈顶组件点开应用,进入收件箱(ActivityA点击回复,开始写新邮件(Activity系人界面(ActivityD)A退出程Task浏览器,这将是一个多么的场面,十个Task栈都堆积着很雷同的浏览器Activity,于是你会有这样一种设想,浏览器Activity,可不可以作为一个单独的Task而存在,不管TaskTaskActivitystandard","singleTop","singleTask"singleInstance"standardTask的Activity,会构造一个Activity的实例,加入到调用者的Task栈中去,对于使用频度一般开销一般什么都一般的Activity而言,standard模式无疑是最合适的,因为它逻辑简而singleTop模式,基本上于standard一致,仅在请求的Activity正好位于栈顶时,有所区别。此时,配置成singleTop的Activity,不再会构造新的实例加入到Task栈中,而是将新来的Intent发送到栈顶Activity中,栈顶的Activity可以通过重载onNewIntent来更避免了一些奇异的行为(Activity,再一级(BrowserBokmarkPgeActivityActivityTasksingleTask,很象Browser...singleTasksingleInstance显得更为一些。在大部分时候singleInstance与singleTask完全一致,唯一的不同在于,singleInstanceActivityActivity,如果涉及到的其他Activity,都移交到其他Task中进行。这使得singleInstance的AndroidActivity,在我个人的工程实践中,曾尝试在有ActivityapkapkAndorid车载电脑:140MActivityandroid:taskAffinity=""activity时就先去找有没有activityactivityallowTaskReparentingAndroid尽量多使用内部类提高程序效率Beanprivate合理设置变量的作用范围application可以,列举aidl服务的例子.Day8Dvmdalivkandroidandroidliunxuid(userid),Simif(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)semophoremessagequeuesinal#共享内存(sharedmemory):共享内存就是映射一段能被其他进程所的内存,这段共享内存由一个进程创建,但多个进程都可以。共享内存是最快的IPC方式,它是针socketAndroidNDKnativedevelopkit只是一个交叉编译的工具ndk,实时性要求高,游戏,图形渲染,opencv(人脸识别),ffmpeg,rmvbmp5avi.ffmpeg,ndk,ndkndk,c1、开放性,开源ophoneandroid)os3mtkandroid5、无缝结合的应55Android系统中GC什么情况下会出现内存呢?编/内存检测内存工具的设为null,因为一个方法执行完毕时,这些会自动被清理。Vectorv=newfor(inti=1;i<100;i++){Objecto=newObject();o=}//此时,所有的Object对象都没有被释放,因为变量v这些对象Java内存的根本原因就是保存了不可能再被的变量类型的Jni开发可能会出现内存AndroidUIView在主线拿到view调用Invalide()方法,查看画画板里面更新imageview的方法postInvalide()方法;newpublicvoidrun(){}AndroidAndroid有利于程序升级,当新版程序和旧版程序的数字相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字不相同,则Android系统认为他们是不同的程序,并产生,会要求新程序更改包名。有利于程序的模块化设计和开发。AndroidAndroidMarket强制要求所有应用程序数字的有效期要持续到2033年10月22日如果要正式发布一个Android,必须使用一个合适的私钥生成的数字来给程序签名,而不能使用adt插件或者ant工具生成的调试来发布。ANR在Android上如果你的应用程序有一段时间响应不够灵敏系统会向用户显示一个框, 框称作应用程序无响应(ANR:ApplicationNotResponding) ANRActivity5秒broadcast10workerthreadhandlermessage…AsynsTaskintentserviceandroidTweenFrameTween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生的变化;1 2LayoutViewView、ControllerAndroid中界面部分也采用了当前比较流行的MVCAndroidM应用程序中二进制的数据,V就是用户的界面。Android的界面直接采用XML文件保存的,界面开发变的很方便。在Android中C也是很简单的,一个Activity可以有多个界面,只需要将视图的IDsetContentView(),就指定了以哪个视图模型显示数据。在AndroidSDK中的数据绑定,也都是采用了与MVC框架类似的方法来显示数据。在控制层上将数据按照视图模型的要求(也就是AndroidSDK中的Adapter)封装就可以直接在视图模型上显示了,从而实现了数据绑定。比如显示Cursor中所有数据的ListActivity,其视ListViewListAdapterListViewDay11AddJavascriptInterfacenewObject{}64,ServiceActivitymainui65,javasoftreferenceStrongReference是Java的默认实现,它会尽可能长时间的存活于JVM内,当没有任何对象指向它时GC执行后将会被回收SoftReference会尽可能长的保留直到JVM内存不足时才会被回收(虚拟机保证),这一特性使得SoftReference非常适合内存缓存tcp/滑动窗口协议.拥塞控制. udp不关心数据是否达到,是否阻塞数据 平qq画面优先.流畅优先qq67,android断点logcatservicelspscatcdrmcatlspspswwcmvrmcdtracertfindgreptailvigccmakeifconfigstartupdhcp70JNIJNIEnv*env,jobject 结android.jarddmstraceviewdaivilkdebugmanagersystemtraceview重新编译,安装,启动服务,测试完成取对应的traceview文件(adbxxxxtracetraceviewKPIkeyperformanceinformationsplash界面过5秒从splash界面加载mainactivity过0.7重构前的代码packageimportimportandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importimportimportimportpublicclassBmiextendsActivity/**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(Bundles

温馨提示

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

评论

0/150

提交评论