app 在后臺時間過長被殺死,及時重啟

大家肯定會遇到過app退到后臺,同時開啟很多其他的應(yīng)用,這時可能會造成我們的app因內(nèi)存不足而導(dǎo)致進程被殺死,這時我們在從后臺返回我們的app時,就會出現(xiàn)問題,特別是用到Application里面存儲的變量時,這時會出現(xiàn)空指針的現(xiàn)象,這時我們就要想辦法來解決這個問題。

第一種是直接在登錄的時候直接把網(wǎng)絡(luò)獲取的數(shù)據(jù)存進數(shù)據(jù)庫,用到的時候直接在數(shù)據(jù)庫拿,這樣呢可以解決問題,但是這時就要寫很多的代碼。同時還要對數(shù)據(jù)庫操作,這樣做起來比較麻煩。

第二種是把數(shù)據(jù)存到application中,這時我們要定義一個變量來判斷app是否被殺死。

(1)先在application中定義一個靜態(tài)變量

//判斷是否被回收public static intflag= -1;

(2)這時我們只需要定義一個BaseActivity

public classBaseActivityextendsAppCompatActivity {@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);? ? ? ? setContentView(R.layout.activity_base);if(MyApplication.flag== -1) {//flag為-1說明程序被殺掉protectApp();? ? ? ? }? ? }protected voidprotectApp() {? ? ? ? Intent intent =newIntent(this, MainActivity.class);? ? ? ? intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//清空棧里MainActivity之上的所有activtystartActivity(intent);? ? ? ? finish();? ? }

(3)這時我們要把我們項目里面的所有activity(除了歡迎頁的activity)t統(tǒng)一繼承這個BaseActivity,并在MainActivity中實現(xiàn)這個protecApp()

@Overrideprotected voidprotectApp() {? ? startActivity(newIntent(this, SplashActivity.class));? ? finish();}

(4)最后我們要在歡迎頁的activity中把flag設(shè)置成-1以外的數(shù);

MyApplication.flag=0;

這樣我們的app被后臺殺死時,都會重走歡迎頁,重新獲取數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.什么是Activity?問的不太多,說點有深度的 四大組件之一,一般的,一個用戶交互界面對應(yīng)一個activit...
    JoonyLee閱讀 5,855評論 2 51
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,828評論 25 709
  • 轉(zhuǎn)自 1. 什么是Activity? 四大組件之一,一般的,一個用戶交互界面對應(yīng)一個activity setCon...
    joe1632閱讀 1,463評論 0 7
  • 哎呀呀 ,馬上就要面臨找工作了,媛媛心里緊張呀. 作為一個即將畢業(yè)的Android程序媛,開始面臨找工作了,...
    左神話閱讀 5,154評論 7 59
  • 冷風(fēng)在肆虐地敲打著窗欞 幽暗的燈光強打著精神 殘缺的桌角發(fā)出殘喘的哀鳴 斑駁的墻在冷風(fēng)中顫抖 爆笑的場景走不進老人...
    夢雪他鄉(xiāng)閱讀 413評論 39 54

友情鏈接更多精彩內(nèi)容