你還記得 Android 應(yīng)用怎么開(kāi)發(fā)嗎
吳小龍同學(xué)
讀完需要
5分鐘
速讀僅需3分鐘
不做 Android 應(yīng)用開(kāi)發(fā)好多年了,熟悉我的老朋友知道我是 12 年開(kāi)始干了 6 年 Android 應(yīng)用開(kāi)發(fā),18 年從 Android 應(yīng)用轉(zhuǎn)向 Android Framework 開(kāi)發(fā)了,如今又是 6 年過(guò)去了,應(yīng)組織需要上下打通,今年開(kāi)始做 Android 驅(qū)動(dòng)開(kāi)發(fā)了。
如上圖,從二三層干到了第五層,越來(lái)越底層,再干我可以干硬件了,哈哈。
近來(lái)要完成一個(gè)全新需求,大概是這樣的:在設(shè)置留有兩個(gè)開(kāi)關(guān),打開(kāi)開(kāi)關(guān),調(diào)用驅(qū)動(dòng),驅(qū)動(dòng)做相關(guān)邏輯處理。這里設(shè)置開(kāi)關(guān)交互有些復(fù)雜,打開(kāi)一個(gè)開(kāi)關(guān),得發(fā)個(gè)通知,告訴用戶,這個(gè)開(kāi)關(guān)將在 12 個(gè)小時(shí)后自動(dòng)關(guān)閉。
這個(gè)需求是一個(gè)非常好的上下打通的案例,我當(dāng)仁不讓,給別人也不會(huì),他們沒(méi)有應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。
我首先要實(shí)現(xiàn)驅(qū)動(dòng)部分,創(chuàng)建一個(gè)節(jié)點(diǎn)供上層調(diào)用,驅(qū)動(dòng)部分實(shí)現(xiàn)較為順利,echo 和 cat 調(diào)試沒(méi)問(wèn)題半天不到就完成了。
應(yīng)用層分 UI 實(shí)現(xiàn)、開(kāi)關(guān)邏輯、向驅(qū)動(dòng)寫(xiě)節(jié)點(diǎn),畢竟老夫還是有 Android 應(yīng)用開(kāi)發(fā)功底,UI 的實(shí)現(xiàn)不費(fèi)吹灰之力,開(kāi)關(guān)邏輯和向驅(qū)動(dòng)寫(xiě)節(jié)點(diǎn)花了點(diǎn)時(shí)間,略有波折也完成了,遺留一個(gè) Bug,發(fā)通知,可以點(diǎn)擊這個(gè)通知再跳到這個(gè)設(shè)置頁(yè)面。
這兩天花時(shí)間去研究了下,關(guān)鍵代碼如下:
public static final String EXTRA_SHOW_FRAGMENT = ":android:show_fragment";
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //添加啟動(dòng)外部應(yīng)用的 Flag,不然會(huì)報(bào)錯(cuò)
intent.putExtra(EXTRA_SHOW_FRAGMENT,"com.android.settings.display.SettingsFragment");//要啟動(dòng)的 fragment
intent.putExtra(PreferenceActivity.EXTRA_NO_HEADERS,true);
intent.setClassName("com.android.settings","com.android.settings.SubSettings");//包名,要啟動(dòng) fragment 所依賴的 Activity
getApplicationContext().startActivity(intent);
這個(gè)跳轉(zhuǎn)要是放在以前做 Android 應(yīng)用那會(huì)兒萬(wàn)不會(huì)如此,實(shí)現(xiàn)不是分分鐘的事。
最后,這個(gè)需求沒(méi)我還真不行,從上到下都是我一個(gè)人完成的,放眼整個(gè)行業(yè)又有多少人會(huì),哈哈,都別叫醒我,讓我吹牛……
