本文來自
http://blog.csdn.net/liuxian13183/,引用必須注明出處
啟動元件的一些方式,今天做一個簡要的總結
Service:通過startService()啟動,或者寫進AndroidManifest.xml實作自啟動
BroadCastReceiver:通過register方法注冊,或者注冊在AndroidManifest.xml中
剩下使用比較頻繁的就是Activity
三種主流方式
1、設定class
Intent intent = new Intent();
intent.setClass(MainActivity1.this, MainActivity2.class);
//intent.setClassName("com.lzx.definepermission","com.lzx.definepermission.MainActivity");
//intent.setComponent(new ComponentName("com.lzx.definepermission", "com.lzx.definepermission.MainActivity"));
startActivity(intent);
第一種又有三種方法,直接setClass,後兩種同樣适用不同于程序間的互調。
2、啟動某個應用
PackageManager manager = MainActivity.this.getPackageManager();
intent = manager.getLaunchIntentForPackage("com.lzx.definepermission");
3、隐式調用
被調用者在AndroidManifest.xml檔案的intent-filter加入action,
如:<action android:name="android.intent.action.definepermission" />
調用者:
intent.setAction("android.intent.action.definepermission");
不适用:
(1)被調用者加入了自定義權限(詳見:
Android自定義權限和使用權限)
(2)被調用者使用隐私屬性,隻讓本項目中類通路
其它使用Intent屬性打開所需Activity:
Intent中的四個重要屬性——Action、Data、Category、Extras小知識:
android:process=":remote",無論Activity或者Service都可添加次屬性
“:remote”代表此Activity需要時即被建立,"remote"代表它成為全局變量,所有的程序中公用此元件