2014-02-08 78 views
0

我的應用程序在啓動時會打開FirstActivity。上次打開的活動

從FirstActivity我可以開始:SecondActivity,ThirdActivity。當我按主頁按鈕,然後返回到我的應用程序時,它總是打開FirstActivity,而不是打開最後一個活動(在返回啓動FirstActivity與onCreate()後)。

我如何在上次活動中恢復應用程序狀態?

在代碼中,我不啓動FirstActivity。

我的清單:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.bvblogic.nimbusnote" 
    android:versionCode="1" 
    android:versionName="1.0"> 


    <uses-sdk 
     android:minSdkVersion="14" 
     android:targetSdkVersion="17.0.0" 
     android:maxSdkVersion="19" /> 
    <permission 
     android:name="com.bvblogic.nimbusnote.activities.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.bvblogic.nimbusnote.activities.permission.MAPS_RECEIVE" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.GET_TASKS"/> 
    <!--Permission for create shortcut on Home Screen--> 
    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"></uses-permission> 


    <uses-feature 
     android:glEsVersion="0x00020000" 
     android:required="true" /> 

    <application 
     android:largeHeap="true" 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:theme="@style/Theme.NimbusNote.Light" 
     android:hardwareAccelerated="true" 
     android:label="@string/app_name" 
     android:name=".application.App"> 
     <activity 

      android:name=".activities.StartActivity" 
      android:theme="@style/Theme.Sherlock.Light.NoActionBar" 
      android:windowSoftInputMode="stateHidden" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.startactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 

     <activity 
      android:name=".activities.FolderListActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.folderlistactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 

     </activity> 
     <activity 
      android:name=".activities.SettingsActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.settingsactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.ExplorerActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.exploreractivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

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

      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.PreviewNoteActivity" 
      android:windowSoftInputMode="adjustPan" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.previewnoteactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.VIEW_NOTE"></action> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name=".activities.EditNoteActivity" 
      android:windowSoftInputMode="adjustResize" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.editnoteactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.NoteInfoActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.noteinfoactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.ChangePlaceMapActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.changeplacemapactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.PlacesActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.placesactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.ChangeTagsActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.changetagsactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 

     <activity 
      android:name=".activities.TagsActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.tagsactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

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

      <meta-data 
       android:name="android.app.searchable" 
       android:resource="@xml/searchable" /> 
     </activity> 
     <activity 
      android:name=".activities.PainterActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.painteractivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 

     <activity 
      android:name=".activities.AccountSettingsActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.accountsettingsactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 

     <activity 
      android:name=".activities.SyncSettingsActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.syncsettingsactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.RecentNotesActivity" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.bvblogic.nimbusnote.activities.recentnotesactivity" /> 
       <category android:name="android.intent.category.DEFAULT" /> 

      </intent-filter> 
     </activity> 

     <service android:name=".services.FullSyncService" /> 
     <service android:name=".services.PrioritySyncService" /> 

    </application> 


</manifest> 

UPDATE: 比我開始從ExplorerActivity PreviewNoteActivity和按Home鍵和快捷鍵從打開的應用程序我回到ExplorerActivity。但按Back後,活動關閉並顯示PreviewNoteActivty。

堆棧:

  • ExplorerActivity
  • PreviewNoteActivity

按Home後,返回到應用程序:

  • ExplorerActivity
  • PreviewNoteActivity
  • ExplorerActivity

但我沒有在應用程序重新啓動後啓動ExplorerActivity。 如果在應用程序啓動後,我關閉了後退按鈕問題的應用程序已解決。但是,編譯和第一次啓動後的問題實際上是

更新2: 後退按鈕偵聽

@Override 
     public void onBackPressed() { 
      if (mDrawerLayout.isDrawerVisible(mDrawerLeft)) { 
       closeNavigationDrawer(); 

      } else if (!notesFragment.searchView.isIconified()) { 
       notesFragment.searchView.setQuery("", true); 
       notesFragment.searchView.setIconified(true); 
       notesFragment.searchView.clearFocus(); 
      } else if (!mDrawerLayout.isDrawerVisible(mDrawerLeft)) { 

       ActivityManager actM = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
       List<ActivityManager.RunningTaskInfo> listm = actM.getRunningTasks(1); 
       int iNumActivity = listm.get(0).numActivities; 
       if (iNumActivity > 1) { 
        finish(); 
       } else { 
//close activity 
        closeAction(); 
       } 
      } 
     } 

private void closeAction() { 
     if (System.currentTimeMillis() - lastTimeBackPressed <= 2000) { 
      App.isExplorerActivityStarted = false; 
      finish(); 
     } else { 
      lastTimeBackPressed = System.currentTimeMillis(); 
      Toast.makeText(getApplicationContext(), "Press again for exit", Toast.LENGTH_SHORT).show(); 
     } 
    } 

UPDATE3: 問題是緊迫的,如果從安裝apk文件(從SD卡)應用程序。如果從IDE(Android Studio)安裝問題沒有。

+1

你用什麼代碼活動之間移動? –

+1

這是正常的mainfest我認爲代碼導航中的問題,或者你實現後退按鈕的方法,你可以發佈代碼? –

+0

哇,在意圖過濾器有點野外!看起來像將從啓動器啓動的活動是ExplorerActivity。爲什麼有這麼多其他意圖過濾器?我的猜測是你不需要所有的人,尤其是那些只是指向包含它們的活動的人。例如。爲什麼在EditNoteActivity和NoteInfoActivity中有一個意圖過濾器?當你使用你的應用程序時,你需要做的就是創建一個intent intent = new Intent(getActivity(),EditNoteActivity.class);告訴操作系統你正在嘗試去那個活動。 –

回答

2

我找到了解決方案: 這是Android系統錯誤。爲了解決這個問題,我把根系活力(剛開始)在onCreate()方法下一個代碼塊:

if (!isTaskRoot()) { 
      Intent intent = getIntent(); 
      String action = intent.getAction(); 
      if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && action != null && action.equals(Intent.ACTION_MAIN)) { 
       finish(); 
       return; 
      } 
     } 
+0

解決方法可行!什麼使你確定它是一個系統錯誤?有關此錯誤的更多信息? – Chlind

+0

此問題在Android問題跟蹤器上有26xxx號 –