相关疑难解决方法(0)

应用程序始终从根活动开始,而不是恢复背景状态(已知错误)

我正面临这些链接中提到的问题:

http://code.google.com/p/android/issues/detail?id=2373

http://groups.google.com/group/android-developers/browse_thread/thread/77aedf6c7daea2ae/da073056831fd8f3?#da073056831fd8f3

http://groups.google.com/group/android-developers/browse_thread/thread/2d88391190be3303?tvc=2

我有一个简单的根活动与LAUNCHER和MAIN意图,没有别的.我开始另一个活动,在清单中没有任何标志或任何额外东西.

我启动应用程序(root活动),然后从那里开始第二个活动.按Home(主页)按钮后,任务将进入后台.在再次启动应用程序时(从Launcher或按住最近应用程序的Home按钮),它会在现有堆栈的顶部启动根活动的新实例.

如果我按下后退按钮,新的"root"活动将关闭,旧的第二个活动将可见,这意味着它将在同一任务中启动根活动,而不是将任务带到前台.

为了解决这个问题,我做了root活动的启动模式singleTask.现在,当我按下主页并再次启动应用程序时,它会清除旧的根任务上方的活动,并将旧的根任务带到前台,而不是仅将第二个活动的整个旧任务放在最前面.请注意,旧的根任务仍保留其应用程序状态,这意味着它不是新实例,但已杀死较高的活动.

它甚至发生在从市场上下载的其他应用程序中.手动安装方法对我没有影响,它仍然以相同的方式启动.

resume android task android-activity

48
推荐指数
3
解决办法
3万
查看次数

Home按钮后重新启动应用程序显示初始活动不是最新的

我有一个具有初始活动的应用程序(A - 也是启动器中指定的活动),它允许用户启动另一个活动(B).我正在保存Activity B的状态(onSaveInstanceState()并在onCreate()中恢复它).

如果用户按下主页按钮(即应用程序转到后台),然后立即重新启动应用程序,则在启动B后某些手机(N1和Motrola Milestone,现在但不是Galaxy S)再次显示活动A(不是B).但如果他们从"最近的"应用程序(主页按钮长按)启动它们,他们将被带到活动B.

根据我对Android文档的理解,除非任务已经被杀死(除了从应用程序屏幕重新启动活动之外没有其他任何操作,似乎没有这样做)我们应该看到活动B在启动时恢复(因为这是在堆栈顶部).所以我似乎无法弄清楚这里到底出了什么问题.

在应用程序使用期间BTW方向更改工作正常(一切保存并恢复正常).这个奇怪的问题一直困扰着我一段时间,通过反复试验,我发现当我禁用该活动的方向,然后尝试重新启动时,B按预期显示.

所以其他人都面对这样的事情,如果是这样,怎么解决这个问题呢?

我期待到保存正在运行的活动SharedPreferences(如提及在这个岗位),他们恢复它在活动A,但想知道如果我失去了一些东西.不应该在重新启动时恢复 B 是默认行为吗?

android android-manifest

14
推荐指数
1
解决办法
4292
查看次数

Android:从HOME重启后保留任务的活动堆栈

我的应用程序有两个活动,我按此顺序开始:

HOME > A > B
Run Code Online (Sandbox Code Playgroud)

现在我按HOME并再次启动"A".我想在"A"的顶部看到活动"B",但我得到"A" - 所以活动堆栈被清除.

表现:

<activity android:name=".activity.A" android:label="A" android:alwaysRetainTaskState="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".activity.B" android:label="B">
    <intent-filter>
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

android activity-stack

9
推荐指数
1
解决办法
8790
查看次数

Android Run应用程序来自上一个Activity

我有一个有几个活动的应用程序.My A Activity具有Manifest Intent过滤器参数:action.MAIN和category.LAUNCHER.在加载之后我调用Activity B并完成()A因为我不再使用它了.

运行我的应用程序后,从活动A转到B并按主页按钮,当我从应用程序菜单或市场应用程序重新启动它时(不是长按主页按钮),它从一个活动,不保存其最后一个活动B.

我肯定知道这可以从上一个Activity重新启动一个应用程序(市场上的一些应用程序支持它),我认为这可以通过Manifest参数确定,但我不知道哪一个.

有没有人知道如何实现它,所以我的应用程序可以从其上一个活动B重新启动?

谢谢ayanir

android android-manifest

7
推荐指数
2
解决办法
6745
查看次数

即使另一个活动在顶部,为什么带有 launchMode="singleTask" 的启动器活动总是被推到后台堆栈的顶部?

由于某些要求,我的启动器活动的 launchMode 属性设置为 singleTask。

<activity
    android:name=".map.MapsActivity"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:theme="@style/MapScreenTheme"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,如果我打开另一个活动 -> 按主页 -> 单击启动器应用程序中的应用程序图标 -> 它会打开 MapActivity 而不是之前打开的活动。

但是,如果我通过最近菜单导航到该应用程序,则不会发生这种情况。然后新打开的活动保持在顶部。

有人可以解释一下这里发生的关于 backstack 的事情,为什么 ActivityManagerService 没有考虑到应用程序进程已经存在,但决定启动启动器应用程序并清除 backstack 而不是简单地将应用程序向前推进?

可以在此处创建的一个小示例应用程序中观察到此问题 - https://github.com/abhiank/SingleTaskActivity

android launchmode android-launcher activity-manager

5
推荐指数
1
解决办法
1317
查看次数