卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

jframe添加目錄的方法 喪尸圍城3怎么解鎖幀率?

喪尸圍城3怎么解鎖幀率?盜墓防御3解鎖幀率如下。選擇自己的碼率,然后在游戲目錄下新建一個(gè)文件,在里面輸入gmpcr_unlock_framhas leaked window 怎么解決?我想大部分人都能

喪尸圍城3怎么解鎖幀率?

盜墓防御3解鎖幀率如下。

選擇自己的碼率,然后在游戲目錄下新建一個(gè)文件,在里面輸入gmpcr_unlock_fram

has leaked window 怎么解決?

我想大部分人都能區(qū)分這三個(gè)東西的概念,但是具體區(qū)別就很難講了。我 我在這里根據(jù)我個(gè)人的理解,談?wù)勎覀€(gè)人對(duì)這三個(gè)概念的理解。當(dāng)然,一般的GUI設(shè)計(jì),比如一般的事件窗口模型,都是在這里設(shè)計(jì)的,所以我贏了 這里不談,我純粹從概念上區(qū)分。Activity是Android應(yīng)用的載體,它允許用戶在上面創(chuàng)建一個(gè)用戶界面,并為用戶提供處理事件的API,如onKeyEvent、onTouchEvent。并維護(hù)應(yīng)用的生命周期(因?yàn)閍ndroid應(yīng)用的運(yùn)行環(huán)境不同于其他操作系統(tǒng),android應(yīng)用是在框架內(nèi)運(yùn)行的,所以他的應(yīng)用可以不從流程的層面考慮,更多的是從理念上考慮。Android應(yīng)用由多個(gè)活動(dòng)組成,每個(gè)活動(dòng)都有自己獨(dú)立的生命周期)。活動(dòng)本身就是一個(gè)巨大的載體,可以理解為應(yīng)用的載體。沒(méi)有活躍度,安卓應(yīng)用就不會(huì)運(yùn)行。也可以理解為安卓應(yīng)用的入口。活動(dòng)的實(shí)例對(duì)象由系統(tǒng)維護(hù)。ActivityManager是一個(gè)系統(tǒng)服務(wù),負(fù)責(zé)維護(hù)activity的實(shí)例對(duì)象,并根據(jù)其運(yùn)行狀態(tài)維護(hù)其狀態(tài)信息。但在用戶層面,程序員可能愿意理解為一個(gè)接口的載體。但它只是一個(gè)載體,不負(fù)責(zé)繪圖。Activity的內(nèi)部實(shí)現(xiàn)實(shí)際上是一個(gè)窗口對(duì)象。Window是一個(gè)抽象類,具體在Android _ src _ home/framework/policies/base/phone/com/Android/internal/policy/impl目錄下。當(dāng)我們調(diào)用activity的setContentView方法時(shí),實(shí)際上調(diào)用的是Window對(duì)象的setContentView方法,所以我們可以看到Activity中界面的繪制實(shí)際上是由Window對(duì)象完成的。如果畫一個(gè)類圖,可以看到Activity聚合了一個(gè)Window對(duì)象。以下是setContentView方法在PhoneWindow中的實(shí)現(xiàn):@ override public void setcontent view(view,params){ if(mContentParent null){ install decor()} else {()}(view,params)final Callback CB get Callback()if(CB!Null) {cb.oncontentchanged ()}}窗口首先判斷mContentParent是否為空,然后調(diào)用installDecor方法(安裝裝飾器)。讓 讓我們來(lái)看看這個(gè)方法是如何實(shí)現(xiàn)的:private void install decoder(){ if(mde cor null){ mde cor generate decoder()(true)} if(mcontendent parent null)。{ mContentParent generate layout(mde cor)mTitleView(TextView)findViewById()if(mTitleView!null){ if((get local features()amp(1 ltlt FEATURE _ NO _ TITLE))!0){ View title container findViewById(_ container)if(title container!null) {(視圖。沒(méi)了)} else {(查看。GONE)} if(frame layout的mContentParent實(shí)例){ ((FrameLayout)mContentParent)。set foreground(null)} } Else {(m title)} } }在這個(gè)方法中,首先創(chuàng)建一個(gè)DecorView,這是一個(gè)擴(kuò)展FrameLayout的類,是所有窗口的根視圖。我們?cè)诨顒?dòng)中調(diào)用的setConctentView被放在DecorView中。這是我們的類圖聚合關(guān)系如下:activity-gtwindow-gtdecorview,這是這三個(gè)類之間最直接的關(guān)系。讓 讓我們?cè)敿?xì)分析類對(duì)象是如何創(chuàng)建的。讓 s不考慮activity的創(chuàng)建(因?yàn)锳ctivity的實(shí)例是由ActivityManager維護(hù)的,與IPC的通信是在另一個(gè)進(jìn)程中設(shè)計(jì)的,后面會(huì)提到。),并考慮窗口和視圖的創(chuàng)建。創(chuàng)建活動(dòng)后,系統(tǒng)將調(diào)用其attach方法將活動(dòng)添加到ActivityThread中。我們發(fā)現(xiàn)Activity的attach方法如下:final void attach (context context,activity thread a thread,instrumentation instr,ibinder token,intident,Application application,Intent intent,ActivityInfo,CharSequence title,Activity parent,String id,Object lastonconfigurationinstance,HashMapltString,Object gt lastonconfigurationchild instances,Configuration config){ attachBaseContext(context)mWindow(this)(this)if(!_ INPUT _ STATE _ UNSPECIFIED){()} mui thread()mMainThread min struction instr mToken token mIdent ident map application application minent intent m component()mActivityInfo m title title m parent membered did id mLastNonConfigurationInstance lastonconfigurationinstance mLastNonConfigurationChildIns tances lastonconfigurationchildinstances(null,m token,m component . flattentostring())if(m parent!null){(()} mWindowmanager()mcurrentconfig } Let ;讓我們看看紅色代碼部分,這是創(chuàng)建窗口對(duì)象的代碼。。有興趣的同學(xué)可以跟進(jìn)看看是怎么創(chuàng)作出來(lái)的。其實(shí)很簡(jiǎn)單。它的內(nèi)部實(shí)現(xiàn)調(diào)用策略對(duì)象的makeNewWindow方法。方法直接添加一個(gè)PhoneWindow對(duì)象如下:public phone window make new window(context context){ return new phone window(context)}這時(shí)我們已經(jīng)可以把進(jìn)程串起來(lái)了。創(chuàng)建活動(dòng)后,系統(tǒng)將調(diào)用其attach方法,將其添加到ActivityThread中,并在attach方法中創(chuàng)建一個(gè)window對(duì)象。下面分析一下視圖的創(chuàng)建。我們知道Window聚合了DocerView,當(dāng)用戶調(diào)用setContentView時(shí),會(huì)有一個(gè)視圖樹(shù)作為已經(jīng)創(chuàng)建的實(shí)例對(duì)象返回到樹(shù)中,所以我們研究DocerView是什么,是如何創(chuàng)建的。讓 讓我們回頭看看窗口實(shí)現(xiàn)中的setContentView方法。讓 讓我們看看上面代碼的紅色部分,setContentView-gt install Decor-gt generated Decor。GenerateDecor直接創(chuàng)建一個(gè)DecorView對(duì)象:Protected Decor View generate Decor()。{Return New DecorView (getContext(),-1)}我們可以看看DecorView的實(shí)現(xiàn),它是PhoneWindow的內(nèi)部類。實(shí)現(xiàn)非常簡(jiǎn)單。默認(rèn)情況下,它會(huì)包含一個(gè)灰色的標(biāo)題欄,然后標(biāo)題欄下會(huì)包含一個(gè)空白區(qū)域,用來(lái)放置用戶調(diào)用setContentView時(shí)的用戶視圖,并傳遞事件。我不 這里不想做詳細(xì)的分析,有興趣的同學(xué)可以自己研究一下。創(chuàng)建DecorView后,返回到窗口中的setContentView方法。查看上面代碼的藍(lán)色部分,并調(diào)用(View,params)來(lái)添加用戶 的視圖樹(shù)進(jìn)行去視圖。到目前為止,我認(rèn)為我們已經(jīng)清楚地認(rèn)識(shí)到它們之間的關(guān)系,并且知道它們的創(chuàng)造過(guò)程。綜上所述,Activity在onCreate之前調(diào)用attach方法,在attach方法中創(chuàng)建一個(gè)窗口對(duì)象。創(chuàng)建窗口對(duì)象時(shí),沒(méi)有創(chuàng)建裝飾對(duì)象。用戶在Activity中調(diào)用setContentView,然后調(diào)用window的setConte。NtView,此時(shí),它會(huì)檢查DecorView是否存在,如果不存在,它會(huì)創(chuàng)建一個(gè)DecorView對(duì)象,然后添加用戶 自己的觀點(diǎn)。