1. 程式人生 > >app 在後臺時間過長被殺死,及時重啟

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

大家肯定會遇到過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 
== -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(); }
(3)這時我們要把我們專案裡面的所有activity(除了歡迎頁的activity)t統一繼承這個BaseActivity,並在MainActivity中實現這個protecApp()
@Override
protected void protectApp() { startActivity(new Intent(this, SplashActivity.class)); finish(); }

 (4)最後我們要在歡迎頁的activity中把flag設定成-1以外的數;

   MyApplication.flag = 0;
這樣我們的app被後臺殺死時,都會重走歡迎頁,重新獲取資料