android之豆瓣项目开发教程源码面试题_第1页
android之豆瓣项目开发教程源码面试题_第2页
android之豆瓣项目开发教程源码面试题_第3页
android之豆瓣项目开发教程源码面试题_第4页
android之豆瓣项目开发教程源码面试题_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

setContentView(),//要显示的布局activityContextwindow.callbackkeyevent.callback,}我开发常用的的有ListActivity ,PreferenceActivity,TabAcitivty等…如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity.进度框的显示与销 Activity生命周期描述的是一个类从创建(new出来)到(回收)的过会执行的方法..在这个过会针对不同的生命阶段会调用不同的方法Activity这些回调方法包括:oncreateondestroyonstoponstartonresumeonpause框的弹出,Activity.this6onRestartActivityonStoponDestroyActivityonRestart(onCreate)方法;onStart()的方法里面.fillData()这样保证每次用户看到的数据都是的多, .onStop(),声音设置为0,记录的位mediaonStart()根据保存的状态恢复现场.media在读文档的时候还发现activityonPostResume()和OnPostCreate()这activityA,B,当在AB组件的时候,A会调用onPause()BonCreate(),onStartOnResume()这个时候B覆盖了窗体,A会调用onStop()方法. 如果B呢是个透明的,或者是框的样式,就不会调用onStop()方法activity,然后重新加载OnpauseonstopondestoryoncreateonstartonConfigurationChanged可以自定义一个activity的样式,详细见卫士的程序详细信息你的Activity被系统回收怎么办?如果的Activity由于某原因被系统回收除了在栈顶的activity,其他的activityprotectedvoidonSaveInstanceState(BundleoutState){ }publicvoidonCreate(BundlesavedInstanceState)savedInstanceState}activityfinishbackactivityonDestroy(该方法通过抛异常,使程序Close验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Close的窗口//安全结束进程android.os.Process.killProcess(android.os.Process.myPid());2Activity:List<Activity>listsapplicationlists=newactivityoncreate()lists.add(this);Ondestory()lists.remove(this);for(Activityactivity:{}Activity//给某个activity接受接受广播的意registerReceiver(receiver,//如果过接受到的是关闭activity的广播 就调用finish()方法把当前的activity4在打开新的Activity时使用startActivityForResult,然后自己加标志,在404servicemainthreadserviceappmainthread(UIservice在子线执行new特殊情况,可以在文件配置service执行所在的进程让service在另外的进执<serviceandroid:process="cn.基本数据类型可以通过.Intentextras.putDouble(key,value)intent.putExtra(name,value)通过intentputExtraBundlebundle=newBundle();bundle.putShort(key,value);获取到激活他的Intentintent=getIntent();Bundlebundle=intent.getExtras();Bundle类似mapApplicationapplicationapplicationactivity让对象实现 Serializable接口把对象存放到文件上让类实现Serializable接口,然后可以通过ObjectOutputStream Filefile=newFile("c:\\1.obj");FileOutputStreamfos=newFileOutputStream(file);ObjectOutputStreamoos=newObjectOutputStream(fos);Studentstu=newStudent();FileInputStreamfis=newFileInputStream(file);ObjectInputStreamois=newObjectInputStream(fis);Studentstu1=(Student)ois.readObject();ParcelableParcelableandroid activityonCreate()方法里面startService();比方说在激活一个新的activity时候,给intent设置flag activitytaskIntentintent=newIntent(A.this,B.class);startService()一旦被创建调用着无关 没法使用service里面的方法bindServiceserviceservicebindService()service 让activity能够到service里面的方法intentIntentservice=newbindServicebindService(intent,newMyConnBIND_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,bindonBind如果一个servicestartService被startstartServiceserviceserviceonBindunbindService不用service,B页面为音乐,从A跳转到B,再返回,如何使音乐继续?这个问题问的很山寨.默认不做任何处理,B里面的音乐都能.遇到问题,startActivityForResultA开启B的时候,用startActivityForResult()方法,B返回的时候把的状态信息返回给A,A继续音乐.serviceuimain OnHandleIntent()处理耗时的操作service如果service正在调用onCreate, 当前service的进程相当于前台进程以避免被killed。servicekilled.service(bindService)Serviceservicekilled。如果有其他的应用组件作为Service,Activity等运行在相同的进,那么将会增加该进的操作.天气预报widgetTimerTaskTimertimertaskBroadcastreceiverservicebind,create.IntentIntentFilterAndroid中通过Intent对象来表示一条消息,一个Intent对象不仅包含有这个消IntentIntentfilter:3Action:动作 Data:数据uri Category:而外的附加信息ActionAction是一个用户定义的字符串,用于描述一个Android应用程序组件,一个IntentFilter可以包含多个Action。在AndroidManifest.xml的Activity定义时可以在其<intent-filterActionActivity<intent-filter<actionandroid:name="ent.action.MAIN"<actionandroid:name="cn..action"ActivityIntentIntentintent=newIntent();那么所有的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"/>的 : .自己定义的 ./如果在IntentFilter中指定了这些属性,那么只有所有的属性都匹配成功时URI数据Category<intent-filter>节点中可以为组件定义一个Category类别列表,当Intent中包含这个列表的所有项目时Category类别匹配才会成功。Intent一般的基本数据类型Intent 数据的uri, Activity,Intent,Serviceactivityservice,intent说自己项目中有这样一个网络更新的功能,显示界面就用的activity,有intentBroadcastReceiver。广播android指定接收者的广播.是不可以被掉<intent-filterandroid:priority="1000">uid<actionandroid:name="vider.onReceive()sendOrderedBroadcast(intent,receiverPermissionresultReceiver,scheduler,initialCode,initialData,initialExtras);resultReceiver广播接受者如果我们显示的指定了广播接收者abortBroadcast();sendStickyBroadcast(intent)//用于接收系统的广播通知,系统会有很多sd卡挂载,重启,广播通知,低电量,来apkbroadcast 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-registerReceiver(receiver,uriandroidpublicclassContentProviderextendsContentProvider{publicbooleanonCreate(){}Query(Uri,String[],String,String[],String)insert(Uri,ContentValues)update(Uri,ContentValues,String,String[])delete(Uri,String,String[])}content://技巧:12.文件权限. /data/data/包名/files 数据库 sockettcp面向连接打 udp平信 Androidhttppostftpfiletransport但是contentprovider还可以去增删改查本地文件.xml文件的,更改网络数据更,LinearLayout,Absolu,TableLayout(从屏幕的左上角开始布局,叠加显示,实际应用器的暂停按钮LinearLayoutAbsoludiv指定了absoluteX,Yqq主qq游戏大厅800*480 fwvga 指定平板机型的游戏开发中经常用到绝对布局widget指定机型的平板游戏开发.2.33.0android2.2 2.3sip开发网 sessionsetup 2.3支持Android3.03.14.0界面布 任务管理器任务管理listviewandroid:layout_below="@id/aaa"idaaaandroid:layout_toLeftOf="@id/bbb"android:layout_alignParentLeft="true"在父元素左对齐android:layout_alignParentRight="true"TableLayout里面可以具体定义每一个元素,设定他的对齐方式android:gravity=""oacssdivUIPaddingMargin 文字对边框 是控件与控件之间的距button,imageviewonmeasure()viewondrawMessage、Handler、MessageQueue、LooperActivityAndroidinterfacedefinitionlanguage(android用来跨进程的方法的服务的方法.如何工作卫士的程序锁卫士Iephony接口挂 Android程序执行需要到安全敏感项必需在androidmanifest.xml中相关权限请求,打 ,网络,获取坐标,写sd卡,读写联系人等..安装的时候会提示用户…-rwrw-rw-rwlinux文件系统的权限是linux权限.比如说sharedpreference里面的Context.Mode_private 777root是的行系统上安装了多种浏览器,能否指定某浏览器指定页面Intent.setAction(VIEW)URIIntentintent=new//com.android.browser/.BrowserActivity"com.android.browser.BrowserActivity");;androidui对android虚拟机的理解,包括内存管理机制回收机制谈谈加载的时候怎么处理大的回收,没有的对象,或者是离开作用空间,在某个时刻会被系统gc掉System.gc();不是立刻去执行回收Moblietv30030K频道.icon电视.点播.Onstop()通知别的界面白板bug,won't反射,配置文件可以讲下activity的源码,比如说每个activity里面都有window.callback和activityActivity创建一个view是通过ondraw画出来的,画这个view之前呢,还会调用Surfaceviewopengl这个问题问的有问题,apk飞车有100M还是能装到上apk世面market上大程序主程序很小5~10M sdcard15分钟之内申请退款apkBroadcast10Service20MP3器.遍历sd卡的Mp3作者信息专辑歌词信息id3id3v1Androidmediascanner,mediaStorecontentprovider分批加载数据,延时加载数据,合理使用缓存等...Javajavaclassconvertviewview异步加载数据,Staticclassview客户端和服务器协同.HttpIf-modify-since:检查数据是否更新1.html2001年302 AndroidJavaAndroidandroidsdk,javajavasdkAndroidSDK了大部分的JavaSDK,少数部分被AndroidSDK抛弃,比如说界面部分java.awtswingpackage除了java.awt.font被外,其他都被抛弃,在Android平androidsdk添加工具jarhttp,pull将Java游戏或者j2me程序移植到Android平台的过 SDKJavaSDK1.6httpUrlconninglast-modified首先我们来看下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,在我个人的工程实践中,曾尝试在有ActivityapkapkAndorid车载电脑:140MActivityandroid:taskAffinity=""activity时就先去找有没有activity2.affinityactivityallowTaskReparenting尽量多使用内部类提高程序效率Beanprivatepublic合理设置变量的作用范围application可以,列举aidl服务的例子. 的状态,去电,来电、未接来电Day8dvmLinux每个android程序系统都会给他分配一个单独的liunx uid(userid),Simsdenvironmentif(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)semophoremessagequeue#信号(sinal):信号是一种比较复杂的通信方式,用于通知接收进程某个已经#共享内存(sharedmemory):共享内存就是映射一段能被其他进程所的内存,这段共享内存由一个进程创建,但多个进程都可以。共享内存是最快的IPC方式,它是针socketAndroidNDKnativedevelopkit只是一个交叉编译的工具ndk,实时性要求高,游戏,图形渲染,opencv(人脸识别),ffmpeg, mp5avi.ffmpeg,ndk,ndkndk,c 阿里云(完全兼容android)乐os3mtkandroid53、运营商对Android仍然有影5Android系统中GC什么情况下会出现内存呢?编/内存检测内存工具的设为null,因为一个方法执行完毕时,这些会自动被清理。Vectorv=newfor(inti=1;i<100;i++) Objecto=newObject();o=Java内存的根本原因就是保存了不可能再被的变量类型的Jni开发可能会出现内存AndroidUIView在主线拿到view调用Invalide()方法,查看画画板里面更新imageview的方newpublicvoidrun(){}AndroidAndroid同一个开发者的多个程序尽可能使用同一个数字,这可以带来以下好处有利于程序升级,当新版程序和旧版程序的数字相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字不相同,则Android系统认为他们是不同的程序,并产生,会要求新程序更改包名。有利于程序的模块化设计和开发。Android在签名时,需要考虑数字的有效期AndroidMarket强制要求所有应用程序数字的有效期要持续到2033年10月22日如果要正式发布一个Android,必须使用一个合适的私钥生成的数字来给程序签名,而不能使用adt插件或者ant工具生成的调试来发布。ANRAndroid框,这个框称作应用程序无响应(ANR:ApplicationNotResponding)框。用户ANRActivity5 broadcast10workerthreadhandlermessage…AsynsTaskintentserviceTweenFrame1 2LayoutViewIDsetContentView(),就指定了以哪个视图模型显示数据。ListViewListAdapterListViewurlDay11AddJavascriptInterfacenewObject{}默认情况同一线程mainui65,javasoftreferenceStrongReference是Java的默认实现,它会尽可能长时间的存活于JVM内,当没有任何对象指向它时GC执行后将会被回收SoftReference会尽可能长的保留直到JVM内存不足时才会被回收(虚拟机保证),这一特性使得SoftReference非常适合内存缓存应用详细见豆瓣客户端的缓tcp/滑动窗口协议.拥塞控制. tcpudp不关心数据是否达到,是否阻塞数据 平qq画面优先.流畅优 qq67,androidlogcatlspscatcdrmcatlspspswwcmvrmcdtracertfindgreptailvigccmakeifconfigstartupdhcp70JNIJNIEnv*env,jobject 结android.jarddmstraceviewdaivilkdebugmanagersystemactivityonCreateDebug.startMethodTracing("要生成的traceview重新编译,安装,启动服务,测试完成取对应的traceview文件(adb/sdcard/xxxx.trace)xxxxtracetraceviewKPIkeyperformanceinformationssh界面过5秒从ssh界面加载mainactivity过0.773,同步异步的理解,什么是同步,什么是异步,多次调用异步方出现什么问题重构前的代码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){} privateOnClickListenercalcBMI=newOnClickListener(){publicvoido

温馨提示

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

评论

0/150

提交评论