2014-09-28 57 views
0

我在GooglePlay上有3個相同的崩潰報告,其中堆棧跟蹤看起來好像用戶直接啓動了內部活動(它沒有針對在清單中設置的類別LAUNCHER的意圖過濾器)。用戶如何啓動內部活動

有沒有辦法做到這一點,我錯過了迄今爲止?是否可以從當前活動創建一種快捷方式,並稍後使用它來直接啓動該活動?

這裏是堆棧跟蹤從GOOGLEPLAY:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eb.ohrh.parawind.free/eb.wind.activity.logbook.LogBookSingleDispActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1728) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1747) at android.app.ActivityThread.access$1500(ActivityThread.java:155) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) at android.os.Handler.dispatchMessage(Handler.java:130) at android.os.Looper.loop(SourceFile:351) at android.app.ActivityThread.main(ActivityThread.java:3814) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:538) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at eb.wind.views.mapv2.MapWithOverlay.isFlightMode(MapWithOverlay.java:599) at eb.wind.views.mapv2.MapWithOverlay.bindToModel(MapWithOverlay.java:335) at eb.wind.activity.logbook.LogBookSingleDispActivity$MyPagerAdapter.<init>(LogBookSingleDispActivity.java:189) at eb.wind.activity.logbook.LogBookSingleDispActivity.onCreate(LogBookSingleDispActivity.java:39) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1082) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1692) ... 11 more

LogBookSingleDispActivity是內部活動。沒有其他活動的準備步驟就無法啓動。

任何想法,如何發生。

回答

0

你的過程不會永遠活着。如果您的應用顯示在最近的任務列表中,但其進程已終止,當用戶返回到您的應用(例如,通過最近的任務列表)時,Android會將用戶返回到他們上次進行的任何活動。

還有其他一些場景,用戶可能會進行「內部」活動(例如,來自您的某個應用程序窗口小部件的Notifications之一)。

您需要確保您的應用程序能夠在用戶來到任何一項活動中生存下來。理想情況下,即使您的活動的先前實例已被銷燬且您的流程已終止,但您仍在使用諸如savedInstanceState之類的內容,以使其出現在您的身邊。在不可能的情況下(例如,您需要用戶重新進行身份驗證),有多種解決方案(例如,檢測您的會話已重置並使用startActivity()來獲取用戶登錄活動)。

+0

我剛剛嘗試以下操作:導航到「內部」活動。使用主頁按鈕關閉應用程序(這意味着它仍在後臺運行,並將從內部活動重新啓動),然後使用應用程序管理器強制停止應用程序。如果我從最近的任務列表重新啓動應用程序,它將打開默認啓動活動。這正是我所期望的。如果應用程序仍處於活動狀態,或者啓動程序活動打開,如果應用程序已被操作系統停止,則最後一個活動會打開。是否有另一種方法來模擬您描述的操作系統行爲? – user2808624 2014-09-28 13:33:05

+0

@ user2808624:「然後使用應用程序管理器強制停止應用程序」 - Android沒有「應用程序管理器」。如果你的意思是「強制停止」,通常通過設置中的「強制停止」按鈕來完成,這不是用戶通常會做的事情。 「有沒有另一種方法來模擬你描述的操作系統行爲?」 - 通過DDMS終止進程。 – CommonsWare 2014-09-28 14:07:58

+0

「Android沒有'應用程序管理器'」?現在,這正是應用程序可以停止的設置的標題。但是你是對的,使用DDMS來停止所描述行爲的過程結果。 – user2808624 2014-09-28 19:17:27

相關問題