Android程式執行分析——中等複雜程度的NTAG I2C Demo為例
阿新 • • 發佈:2018-12-13
首先檢視AndroidManifest.xml檔案,這個是清單檔案,可以簡單地理解為這個APP的配置檔案。
就是下圖中的這個檔案
這裡要注意intent-filter裡的程式碼,如圖所示
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
這裡表示SplashActivity是這個專案的主Activity,在你的手機上點選開啟APP,首先啟動的就是這個SplashActivity
SplashActivity
這個SplashActivity是歡迎介面或是引導介面
在SplashActivity的原始碼中,可以很容易地發現,程式通過顯示意圖來到MainAcivity
接下來就到了MainActivity
MainActivity
先看一下MainAcitivity的XML檔案,可以發現:最外層是TabHost,然後往裡是一個RelativeLayout,這個相對佈局是針對以下三個部分設計的,也就是:TabWidget FrameLayout ViewPager
MainActivity的一個重要作用就是管理Fragment的切換,我們看一下程式碼是怎麼做的
找到ViewPager
找到TabHost
new一個介面卡,並在初始化的時候將mViewPager和mTabHost通過mTabsAdpater聯絡起來
下面的程式碼用於新增一些條目,分別對用APP裡的DEMO NDEF SPEED CONFIG
mTabsAdapter.addTab( mTabHost.newTabSpec("leds").setIndicator( getString(R.string.leds)), LedFragment.class, null); mTabsAdapter.addTab( mTabHost.newTabSpec("ndef").setIndicator( getString(R.string.ndefs)), NdefFragment.class, null); mTabsAdapter.addTab( mTabHost.newTabSpec("ntag_rf").setIndicator( getString(R.string.ntag_rf_text)), SpeedTestFragment.class, null); mTabsAdapter.addTab( mTabHost.newTabSpec("config").setIndicator( getString(R.string.settings)), ConfigFragment.class, null);
下面這段程式碼用於Tab之間的切換
首先當然要確保tag和reader都是非空的
並且tag和reader兩者是相互連線的,才能開始後續的工作,也就是launchDemo
未完待續