2013-02-19 63 views
2

工作燈5.0.5 Android平臺爲Android launchMode標準 - 4.1的onResume不是在工作燈項目

我一直在努力爲本地和混合代碼庫合併成一個單一的工作燈的應用程序。作爲其中的一部分,我已將啓動器活動launchMode更新爲「標準」,以便在應用程序恢復時恢復到正確的Web視圖或基於用戶正在查看的最後一次活動的其他活動。 (工作燈默認項目設置爲'singleTask')

從eclipse直接構建到他的設備上時,此配置可以正常工作。當我創建一個簽名的APK副本到設備並安裝時,我會在恢復生命週期中獲得不同的行爲。下面是創建錯誤

  1. 開始應用
  2. 更改應用
  3. 按Home鍵的狀態
  4. 打開應用程序文件夾
  5. 點擊應用程序圖標 結果的步驟 - 應用程序運行的onCreate而比onResume

奇怪的是,如果我在家裏做長時間的按壓,並從最近選擇我的應用程序編輯它恢復正常。 (他們爲什麼會不同?)

我最近升級到5.0.5,並且現在才注意到這個問題。也許它與新的phonegap版本有關?

該問題很容易通過新的Worklight項目重新創建。

  1. 使用沒有框架的新項目嚮導。
  2. 修改你的Android活動

    activity android:name=".SimpleWorklight" 
          android:label="@string/app_name" 
          android:configChanges="orientation|keyboardHidden" 
          android:launchMode="standard" 
    
  3. 更新標記,這樣就可以改變其狀態,證明了的onCreate,VS上的onResume

    <input type="submit" onclick="buttonClick()"> 
    <span id=label>SimpleWorklight</span> 
    
    VAR櫃檯= 1; function buttonClick(){ document.getElementById(「label」)。innerText =「Clicked」+ counter; counter = counter + 1; }

它相當類似這樣 https://groups.google.com/forum/?fromgroups=#!topic/android-developers/UjWcsFMe6ik

更新 - 我嘗試了同樣的測試,並得到了與5.0.2.407開發者版 亞倫Allsbrook

+0

我現在已經嘗試了這種方式,而沒有使用worklight ....構建android項目與科爾多瓦1.5和科爾多瓦2.2我仍然看到失敗,請單擊應用程序圖標時調用onResume – 2013-02-19 21:09:39

+1

這似乎是純粹與Android和簽名構建問題http://code.google.com/p/android/issues/detail?id=2373 ...現在測試替代方法 – 2013-02-20 13:06:42

回答

2

我跑了相同的結果解決了這個問題,它似乎是一個可能的錯誤在android中(或者只是android的行爲方式)當你從應用程序圖標啓動時,它基本上總是在現有的一個上面開始一個新的活動,如果它已經在那裏。這裏提到了幾種可能的解決方案。 http://code.google.com/p/android/issues/detail?id=2373

我第一次嘗試加入到onCreate方法

 if (!isTaskRoot()) { 
     finish(); 
     return; 
    } 

的simpliest的方法,但是這回的NPE從cordovawebview圖書館回來。我試圖在這裏找到解決方案,而不是試圖通過Worklight進入到科爾多瓦進行調試https://github.com/cleverua/android_startup_activity

您在哪裏創建了一個啓動android活動來查看所有正在運行的任務。如果它發現任務正在運行,它將簡單地關閉新的活動並回退到正在運行的活動。如果它沒有發現任務正在運行,它將創建新的意圖和轉換。

+0

您能否將問題標記爲已回答? – 2013-03-18 06:14:10