Android 開發(fā)與代碼無關(guān)技巧詳解
1.如何找到代碼
作為客戶端的開發(fā),工作中經(jīng)常遇到,后端的同事來幫忙找接口詳情。產(chǎn)品經(jīng)理來詢問之前的某些功能的業(yè)務(wù)邏輯,而這些代碼或者邏輯都是前人遺留下來的……沒有人知道在哪。那如何快速的找到你想找到的代碼位置呢?
(1)無敵搜索大法
雙擊shift鍵,頁面上有什么就在代碼中全局搜索什么,比如標(biāo)題,按鈕名字~找到資源文件布局文件,再進(jìn)一步搜索用到這些文件的代碼位置。
(2)log輸出大法
在不方便debug的時候,可以輸出一些log,通過查看log的輸出,可以明確的看出程序運(yùn)行時的運(yùn)行邏輯和變量值。
(3)profiler查看大法
我們要善于利用AndroidStudio提供的工具,比如profiler。在profiler中可以看到手機(jī)中正在運(yùn)行的Activity的名字,甚至能看到網(wǎng)絡(luò)請求的詳情等等,功能很強(qiáng)大!
(4)萬能法找到頁面
在你的Application中注冊一個Activity的生命周期監(jiān)聽,
ActivityLifeCycle lifecycleCallbacks = new Application.ActivityLifecycleCallbacks(); registerActivityLifecycleCallbacks(lifecycleCallbacks);
在進(jìn)入到頁面的時候,直接輸出頁面路徑~
@Override public void onActivityCreated(Activity activity, Bundle bundle) { Log.e(TAG, "onActivityCreated :" + getActivityName(activity)); }
2.如何解決bug
這里討論的是那些第一時間沒有思路不知道如何解決的bug。這些bug有的是因?yàn)殚_發(fā)過程中粗心寫錯變量名,變量值,使用了錯誤的方法,少執(zhí)行了方法,之前修改bug時某些地方被遺漏了,或者不小心把不應(yīng)該改動的地方做了改動。也可能是因?yàn)槭褂玫牡谌綆齑嬖谌毕荩部赡苁菙?shù)據(jù)問題,接口返回的數(shù)據(jù)不正確,用戶做了意料之外的操作沒有被程序正確處理等等。
解決棘手的bug之前,首先要穩(wěn)定自己的心態(tài)。記住,心態(tài)很重要。無論這個bug已經(jīng)造成了線上多么大的影響,你的boss多么著急的催著你解決bug,要有一個平穩(wěn)的心態(tài)才能解決問題,否者,慌慌忙忙緊緊張張的狀態(tài)下去解決bug,很可能會造成更多的bug!
(1)先看再想最后動手
解決bug的第一步,當(dāng)然是穩(wěn)定的復(fù)現(xiàn)bug。根據(jù)我的經(jīng)驗(yàn),如果一個bug可以被穩(wěn)定的復(fù)現(xiàn),至少它就被解決了70%。
通過觀察bug的現(xiàn)象,就可以對bug做個大致的歸類或者定位了。是因?yàn)閿?shù)據(jù)問題?還是第三方庫的問題?還或者是代碼的問題?
接著就是debug,看日志等常規(guī)操作了~
如果經(jīng)過上面的操作,你還是一籌莫展,那么請往下看。
(2)改變現(xiàn)狀
如果你真的是一點(diǎn)思路也沒有,很可能某些可能造成bug的代碼也看不太懂。我建議你做一些改變現(xiàn)狀的操作,比如:注掉某些代碼,嘗試其他的輸入數(shù)據(jù)或者操作??偠灾?,就是讓bug的現(xiàn)象出現(xiàn)改變! 那么你做的這些操作肯定是對這個bug是有影響的!?。∪缓笤僦鸩交謴?fù)之前注掉的代碼,直到恢復(fù)某些注掉代碼之后,bug的現(xiàn)象恢復(fù)了。很有可能這里就是造成bug的位置。bug定位了之后,再去思考解決辦法。
(3)是技術(shù)問題還是業(yè)務(wù)問題
在實(shí)際的開發(fā)過程中,很多問題是通過技術(shù)手段解決不了的??赡苁菢I(yè)務(wù)邏輯就出現(xiàn)了矛盾,也有可能是是因?yàn)橐恍┢嫫婀止值耐醢说钠?股。這類問題要早點(diǎn)發(fā)現(xiàn),早點(diǎn)提出,才能早點(diǎn)解決。有些可能踩紅線的問題,作為開發(fā),不要試圖通過技術(shù)去解決?。?!否則可能要去踩縫紉機(jī)了~~~
(4)張張嘴遠(yuǎn)勝于動動手
我一直堅信,世界上有更多能力比我強(qiáng)的人。我現(xiàn)在面對的bug也肯定不是只有我面對了。張張嘴問問周圍的同事,問問網(wǎng)站上的大神,現(xiàn)在網(wǎng)絡(luò)這么發(fā)達(dá),只要別人解決過的問題,就不是問題。
很多時候的bug可能只是因?yàn)槟銓δ承╊I(lǐng)域不熟悉,去請教那些對這個領(lǐng)域熟悉的人,你的問題對他們來說可能不是問題。
(5)bug解決不了,那就解決提出bug的人
有的時候的bug可能不是bug。提出bug的人可能只是對某些操作或者現(xiàn)象不理解,或者沒有達(dá)到他們的預(yù)期。他們就會提出來,他們覺得現(xiàn)在的程序是有問題的……這個時候可以去嘗試解決這個提出bug的人!讓他們覺得這不是一個bug。當(dāng)然你沒有這種“解決人”的能力的話,就還是老老實(shí)實(shí)去解決bug吧~
(6)解決了bug之后
人的成長在于,遇到了問題,敢于直面問題,解決問題,并讓自己今后避免再出現(xiàn)類似的問題!
解決了bug,無論這個bug是自己造成的還是別人造成的。要善于總結(jié),避免日后自己再寫出類似的問題。
3.如何實(shí)現(xiàn)不會的功能
(1)不要急著拒絕
遇到如何實(shí)現(xiàn)不會的功能,內(nèi)心首先不要著急抗拒。
人總要成長,開發(fā)的技能如何成長?總不是像流水線工人那樣做些一些“熟練”操作吧?總要走出自己的舒適圈,嘗試解決一些問題,突破自己的上限吧~
你要知道,在Android開發(fā)這個領(lǐng)域,其實(shí)沒有什么逾越不了技術(shù)壁壘!只要別人家有的,你就可能有!別人家做出來的東西,你就能做出來。這種信心,至少要有的~
(2)大事化小小事化了
一個復(fù)雜的功能,通??梢苑纸獬梢恍┖唵喂δ埽唵蔚墓δ芫涂梢怨タ?!
那么當(dāng)你在面對要實(shí)現(xiàn)一個復(fù)雜功能或者沒有接觸過的功能開發(fā)的時候,你所要做的其實(shí)就是分解這個功能,然后處理分解后的小功能,最后再把這些小功能組合回去!
心態(tài)要穩(wěn),天塌了有個高的頂著
遇到問題,嘗試解決,實(shí)在不行,就要及時向上級反饋。作為你的上級,他們有責(zé)任也有能力幫你解決問題,或者至少給你提供解決問題的一種思路。心態(tài)要穩(wěn),天塌了有個高的頂著。
以上就是Android 開發(fā)與代碼無關(guān)技巧詳解的詳細(xì)內(nèi)容,更多關(guān)于Android 無關(guān)代碼開發(fā)技巧的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android系統(tǒng)進(jìn)程間通信Binder機(jī)制在應(yīng)用程序框架層的Java接口源代碼分析
本文主要介紹 Android系統(tǒng)進(jìn)程間通信Binder機(jī)制Java 接口源碼分析,這里詳細(xì)介紹了如何實(shí)現(xiàn)Binder 機(jī)制和Java接口直接的通信,有興趣的小伙伴可以參考下2016-08-08Android?kotlin?跳轉(zhuǎn)手機(jī)熱點(diǎn)開關(guān)頁面和判斷熱點(diǎn)是否打開(親測可用)
跳轉(zhuǎn)手機(jī)熱點(diǎn)的頁面肯定是用intent,重點(diǎn)是action不知道是什么,網(wǎng)上最常見的就是Settings.ACTION_WIFI_SETTINGS 跳轉(zhuǎn)wifi設(shè)置頁面,本文介紹Android?kotlin?跳轉(zhuǎn)手機(jī)熱點(diǎn)開關(guān)頁面和判斷熱點(diǎn)是否打開,感興趣的朋友一起看看吧2023-08-08Android實(shí)現(xiàn)語音數(shù)據(jù)實(shí)時采集、播放
這篇文章主要介紹了android實(shí)現(xiàn)語音數(shù)據(jù)實(shí)時采集、播放的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12Android6.0 Launcher2應(yīng)用解析
這篇文章主要為大家詳細(xì)介紹了Android6.0 Launcher2應(yīng)用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09Android權(quán)限管理之Permission權(quán)限機(jī)制及使用詳解
本篇文章主要介紹了Android權(quán)限管理之Permission權(quán)限機(jī)制及使用,主要講訴了android的權(quán)限使用問題,有需要的可以了解一下。2016-11-11android實(shí)現(xiàn)多點(diǎn)觸摸效果
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)多點(diǎn)觸摸效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05Android編程基于重力傳感器實(shí)現(xiàn)橫豎屏放向切換功能
這篇文章主要介紹了Android編程基于重力傳感器實(shí)現(xiàn)橫豎屏放向切換功能,結(jié)合具體實(shí)例形式分析了Android基于重力傳感器實(shí)現(xiàn)橫豎屏切換的相關(guān)操作技巧,需要的朋友可以參考下2018-01-01