2014-02-08 81 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号 –