1. 程式人生 > >Android程式執行分析——中等複雜程度的NTAG I2C Demo為例

Android程式執行分析——中等複雜程度的NTAG I2C Demo為例

首先檢視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

未完待續