簡體   English   中英

Android-在進程被殺死時恢復狀態

[英]Android - restoring state when process has been killed

我在Android中進行了帶有片段的活動,如果我最小化應用程序,並且一段時間后系統終止了該進程,則稍后運行我的應用程序時會崩潰,因為它試圖從第二個活動(包含片段的活動)中恢復,即使該進程已被終止,也不是啟動程序活動。 它崩潰的原因是,在片段中某些視圖使用了Singleton類中的變量,並且當進程被殺死時,所有這些變量都變為空。 因此,我嘗試檢查承載此類片段的父活動

public class SecondActivity extends FragmentActivity {

    FragmentTabsAdapter tabsAdapter;
    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e("Crash", "Second Activity");
        if (Commons.INST.someVariableFromTheSingleton == null) {
            Intent i = new Intent(this, SplashScreen.class);
                        // Splash screen is the launcher activity
            startActivity(i);
        } else {
            setContentView(R.layout.activity_second);
            tabsAdapter = new FragmentTabsAdapter(getSupportFragmentManager());
            mViewPager = (ViewPager) findViewById(R.id.pager);
            mViewPager.setAdapter(tabsAdapter);
        }
    }

}

問題是,即使我明確聲明要啟動啟動器活動,當它嘗試還原活動時,它仍將繼續使用第二個活動生命周期方法。...一旦啟動了意圖,如何停止它?

考慮將SingledApplication類與SharedPreferences一起使用。 從android文檔中

您可以使用SharedPreferences保存任何原始數據:布爾值,浮點數,整數,長型和字符串。 這些數據將在用戶會話之間保持不變(即使您的應用程序被終止)。

嘗試在startActivity(i)之后調用finish()

SecondActivity活動在AndroidManifest.xml中是否具有意圖過濾器MAIN,如下所示

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
    </intent-filter>

如果確實嘗試刪除此過濾器。

onCreate()您想這樣做:

        Intent i = new Intent(this, SplashScreen.class);
                    // Splash screen is the launcher activity
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
        return;

僅當SplashScreen仍位於活動堆棧的根目錄(即:尚未完成)時,此選項才有效。 如果當前正在啟動下一個Activity時在SplashScreen調用finish() ,則需要將其刪除,以便始終將SplashScreen作為Activity堆棧的根。 為了防止用戶按BACK返回到SplashScreen您應該在SplashScreen啟動下一個Activity時在SplashScreen設置一個布爾標志,而在SplashScreen.onResume()則應檢查此布爾標志,如果該標志是,請調用finish()設置(然后將“退出”您的應用程序)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM