Application
android.app.Application这个包的onCreate()才是真正的Android入口点,只不过大多数开发者无需重写该类
重写Application
import android.app.Application; import android.content.ComponentName; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ServiceInfo; import android.os.Bundle; import android.util.Log; public class MyApplication extends Application { private static final String TAG = MainActivity.TAG; @Override public void onCreate() { Log.d(TAG, "MyApplication onCreate()"); super.onCreate(); try { ApplicationInfo appInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA); Bundle appBundle = appInfo.metaData; String appId = appBundle.getString("APP_ID"); Log.d(TAG, "appId: " + appId); ActivityInfo activityInfo = getPackageManager().getActivityInfo( new ComponentName(this, MainActivity.class), PackageManager.GET_META_DATA); String dataName = activityInfo.metaData.getString("data_Name"); Log.d(TAG, "activity dataName: " + dataName); ServiceInfo serviceInfo = getPackageManager().getServiceInfo( new ComponentName(this, MyService.class), PackageManager.GET_META_DATA); String serviceDataName = serviceInfo.metaData.getString("service_data_name"); Log.d(TAG, "service dataName: " + serviceDataName); } catch (NameNotFoundException e) { e.printStackTrace(); } } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); } }
import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { public static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG, "MainActivity onCreate()"); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.chameleon" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <application android:name="MyApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="APP_ID" android:value="App123" /> <activity android:name=".MainActivity" android:label="@string/app_name" > <meta-data android:name="data_Name" android:value="this is MainActivity" /> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyService" > <meta-data android:name="service_data_name" android:value="this is a service" /> </service> </application> </manifest>
muhe221@muhe:~/code$ adb logcat -s MainActivity
D/MainActivity(11348): MyApplication onCreate()
D/MainActivity(11348): appId: App123
D/MainActivity(11348): activity dataName: this is MainActivity
D/MainActivity(11348): service dataName: this is a service
D/MainActivity(11348): MainActivity onCreate()

浙公网安备 33010602011771号