Android的Application中onCreate執(zhí)行多次解決方案

一般情況下上岗,一個(gè)應(yīng)用開啟一個(gè)進(jìn)程随橘,application會被執(zhí)行一次,如果涉及多開進(jìn)程聚假,那情況就不同了块蚌,application就會被執(zhí)行多次,下面筆者根據(jù)這問題對應(yīng)用開啟多進(jìn)程的進(jìn)行分析:

android:process

說到Android進(jìn)程膘格,我們就得了解android:process這個(gè)屬性峭范,這個(gè)屬性有什么作用?我們就來看看:
??在Android的幫助文檔中我們可以了解到瘪贱,一般情況下一個(gè)服務(wù)沒有自己獨(dú)立的進(jìn)程纱控,它一般是作為一個(gè)線程運(yùn)行于它所在的應(yīng)用的進(jìn)程中。但是也有例外菜秦,Android聲明文件中的android:process屬性卻可以為任意組件包括應(yīng)用指定進(jìn)程甜害,換句話說,通過在聲明文件中設(shè)置android:process屬性,我們可以讓組件(例如Activity, Service等)和應(yīng)用(Application)創(chuàng)建并運(yùn)行于我們指定的進(jìn)程中球昨。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.soubw.prodemo" >//包名

<activity android:name=".LoginActivity"
    android:process=":login"/>//為activity開啟一個(gè)進(jìn)程

上面就是為登錄的Activity開啟一個(gè)叫l(wèi)ogin進(jìn)程尔店,只不過這個(gè)進(jìn)程是在以應(yīng)用默認(rèn)的包名下開啟的進(jìn)程,叫com.soubw.prodemo:login主慰,在屬性中值為什么以冒號開頭呢嚣州,因?yàn)椤?’這個(gè)前綴將把這個(gè)名字附加到你的包所運(yùn)行的標(biāo)準(zhǔn)進(jìn)程名字的后面作為新的進(jìn)程名稱(只不過這個(gè)login進(jìn)程為該應(yīng)用私用,其他應(yīng)用不能共享)共螺,上面的例子很好的講述這點(diǎn)该肴。

還有一種是不以冒號開頭而以小寫字母開頭,我們也舉個(gè)例子來說明:

<activity android:name=".RegisterActivity"
    android:process="com.wxj.register"/>//為activity開啟一個(gè)不同于應(yīng)用包名的進(jìn)程

這個(gè)進(jìn)程將以com.wxj.register這個(gè)名字命名的運(yùn)行于全局的進(jìn)程中(該進(jìn)程就可以讓不同應(yīng)用中的各種組件可以共享一個(gè)進(jìn)程)藐不。

解決多進(jìn)程次執(zhí)行多次onCreate()

如果應(yīng)用中采用多進(jìn)程方式匀哄,oncreate方法會執(zhí)行多次秦效,根據(jù)不同的進(jìn)程名字進(jìn)行不同的初始化。應(yīng)用判斷進(jìn)程名字進(jìn)行單獨(dú)初始化拱雏,這要就可以利用進(jìn)程名根據(jù)具體需求棉安,應(yīng)該加載哪些資源底扳,執(zhí)行哪些具體邏輯了铸抑。

@Override
public void onCreate() {
    super.onCreate();
    String processName = getProcessName(this);
    if (processName!= null) {
        if(processName.equals("com.soubw.prodemo")){
            //初始化com.soubw.prodemo以包名為進(jìn)程名,項(xiàng)目默認(rèn)的進(jìn)程
        } else if(processName.equals("com.soubw.prodemo:login")){
            //初始化com.soubw.prodemo:login
        }else if(processName.equals("com.wxj.register")){
            //初始化com.wxj.register
        }else{

        }
    }
}

private String getProcessName(Context context) {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningAppProcessInfo> runningApps = am.getRunningAppProcesses();
    if (runningApps == null) {
        return null;
    }
    for (ActivityManager.RunningAppProcessInfo proInfo : runningApps) {
        if (proInfo.pid == android.os.Process.myPid()) {
            if (proInfo.processName != null) {
                return proInfo.processName;
            }
        }
    }
    return null;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衷模,一起剝皮案震驚了整個(gè)濱河市鹊汛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱冶,老刑警劉巖刁憋,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異木蹬,居然都是意外死亡至耻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門镊叁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尘颓,“玉大人,你說我怎么就攤上這事晦譬“唐唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵敛腌,是天一觀的道長卧土。 經(jīng)常有香客問我,道長像樊,這世上最難降的妖魔是什么尤莺? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮生棍,結(jié)果婚禮上颤霎,老公的妹妹穿的比我還像新娘。我一直安慰自己足绅,他們只是感情好捷绑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著氢妈,像睡著了一般粹污。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上首量,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天壮吩,我揣著相機(jī)與錄音进苍,去河邊找鬼。 笑死鸭叙,一個(gè)胖子當(dāng)著我的面吹牛觉啊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沈贝,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼杠人,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宋下?” 一聲冷哼從身側(cè)響起嗡善,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎学歧,沒想到半個(gè)月后罩引,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枝笨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年袁铐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片横浑。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剔桨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伪嫁,到底是詐尸還是另有隱情领炫,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布张咳,位于F島的核電站帝洪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏脚猾。R本人自食惡果不足惜葱峡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望龙助。 院中可真熱鬧砰奕,春花似錦、人聲如沸提鸟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽称勋。三九已至胸哥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赡鲜,已是汗流浹背空厌。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工庐船, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嘲更。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓筐钟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赋朦。 傳聞我的和親對象是個(gè)殘疾皇子篓冲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,744評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)北发,斷路器纹因,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • Application 標(biāo)簽 android:allowTaskReparenting android:allow...
    Shawn_Dut閱讀 7,770評論 2 61
  • 有時(shí)候覺得自已常常陷入一個(gè)漩渦喷屋,難以走出琳拨。什么時(shí)候呢?一個(gè)人的時(shí)候屯曹,看有關(guān)感情的文字和視頻的時(shí)候狱庇,睡覺的時(shí)候,...
    米粒llf閱讀 163評論 0 0
  • 二恶耽、吃 貴州的美食不得不說密任,在我心目中僅次于玩。 旺血面:有興旺發(fā)達(dá)之寓意 可以少辣偷俭,比較香浪讳,除了面還有血和腸,是...
    江南茱兒閱讀 369評論 0 1