2014-09-28 52 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

相关问题