app 在後臺時間過長被殺死,及時重啟
阿新 • • 發佈:2019-01-27
大家肯定會遇到過app退到後臺,同時開啟很多其他的應用,這時可能會造成我們的app因記憶體不足而導致程序被殺死,這時我們在從後臺返回我們的app時,就會出現問題,特別是用到Application裡面儲存的變數時,這時會出現空指標的現象,這時我們就要想辦法來解決這個問題。
第一種是直接在登入的時候直接把網路獲取的資料存進資料庫,用到的時候直接在資料庫拿,這樣呢可以解決問題,但是這時就要寫很多的程式碼。同時還要對資料庫操作,這樣做起來比較麻煩。
第二種是把資料存到application中,這時我們要定義一個變數來判斷app是否被殺死。
(1)先在application中定義一個靜態變數
//判斷是否被回收public static int flag = -1;
(2)這時我們只需要定義一個BaseActivity
public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base); if (MyApplication.flag(3)這時我們要把我們專案裡面的所有activity(除了歡迎頁的activity)t統一繼承這個BaseActivity,並在MainActivity中實現這個protecApp()== -1) {//flag為-1說明程式被殺掉 protectApp(); } } protected void protectApp() { Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//清空棧裡MainActivity之上的所有activty startActivity(intent); finish(); }
@Overrideprotected void protectApp() { startActivity(new Intent(this, SplashActivity.class)); finish(); }
(4)最後我們要在歡迎頁的activity中把flag設定成-1以外的數;
MyApplication.flag = 0;
這樣我們的app被後臺殺死時,都會重走歡迎頁,重新獲取資料