【问题标题】:Kill activity when it comes to foreground在前台杀死活动
【发布时间】:2012-08-22 11:38:41
【问题描述】:

我正在编写一个应用程序,遇到一个问题。我有三个活动 A、B 和 C。当我从活动 A 转到 B 和 B 到 C 时,如果我按下设备上的菜单按钮。我的应用程序进入后台状态.当我重新打开应用程序时,它显示活动 C。我希望当我重新打开应用程序时,它应该显示活动 A,而不是活动堆栈中的任何其他活动。 我已经完成了一些活动生命周期方法并尝试覆盖它。我已经覆盖了 onStart() ,onPause() 方法和完成活动 C 以及活动 B,我面临的问题是当我从活动 C 转到活动 D 活动时C 完成所有后台活动 nm 在活动 D 完成后无法返回活动 C。 谁能帮我如何在申请简历上显示具体的活动? 提前谢谢。

这是我的 manifest.xml

<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application    
              android:icon="@drawable/icon"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >

    <activity   
        android:label="@string/app_name"
        android:name="com.buttonpay.Login"
        android:screenOrientation="portrait"
        android:clearTaskOnLaunch="true" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


     <activity android:name=".ButtonPayActivity"
                android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                android:screenOrientation="portrait"/>    


    <!-- HomeTab Activity -->

            <activity android:name="com.buttonpay.home.Utilities"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>


            <activity android:name="com.buttonpay.home.Top_up"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
            <activity android:name="com.buttonpay.home.HomeScreen"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>

            <activity android:name="com.buttonpay.home.MyAccount"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
             <activity android:name="com.buttonpay.home.TransactionHistory"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
              <activity android:name="com.buttonpay.home.TransactionDetailsActivity"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
                <activity android:name="com.buttonpay.home.TransactionList"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
               <activity android:name="com.buttonpay.home.BusinessSummaryActivity"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
               <activity android:name=".home.MobileMoneyActivity"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>


     <!-- balance tab Activity -->
            <activity android:name="com.buttonpay.balance.BalanceTab"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        />



     <!-- Favouritetab Activity -->
             <activity android:name="com.buttonpay.favourite.FavouriteTab"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        />

  <!-- ComingSoon -->
<activity android:name="com.buttonpay.home.ComingSoon"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>

 <!-- Settings -->
<activity android:name="com.buttonpay.settings.SettingList"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>



</application>

【问题讨论】:

  • 下面大卫的解决方案对你有用吗?
  • 没有大卫的解决方案不起作用..我有登录活动,当我按下设备上的菜单按钮时,菜单活动和描述活动,应用程序最小化,当我重新打开应用程序时它显示描述活动。我想要登录活动应该显示..有什么帮助吗??
  • 我添加了有问题的 manifest.xml。看看

标签: android android-intent android-activity


【解决方案1】:

在清单中,在您的根活动上设置此项(即在您的应用程序中启动的第一个活动,具有 ACTION_MAIN 和 CATEGORY_LAUNCHER 的活动):

android:clearTaskOnLaunch="true"

您无需执行任何其他操作。没有覆盖生命周期方法。

EDIT 在一些经验实验后添加额外信息:

您需要确保您的 根活动 始终位于任务的活动堆栈中才能使这项工作正常进行。这意味着您不能在 root 活动 上调用 finish(),直到用户真正想要退出您的应用程序(即:当他在您的 root 活动中按下 BACK 键时强>)。

在您的示例中,您有一个 LoginActivity、MenuActivity 和 DescriptionActivity,而 LoginActivity 是 根活动。当 LoginActivity 启动 MenuActivity 时,它不能自行调用 finish()。在这种情况下,当用户在 MenuActivity 中按下 BACK 键时,它将返回到 LoginActivity。如果这不是您想要的,那么您需要在已启动 MenuActivity 的 LoginActivity 中设置一个标志,并且当调用 onResume() 时,您可以检查该标志以确定您是否从 MenuActivity 中返回如果您可以立即致电finish()

【讨论】:

  • 不工作..我有登录活动,当我按下设备上的菜单按钮时,菜单活动和描述活动,应用程序最小化并且当我重新打开应用程序时它显示描述活动。我希望登录活动应该被显示。 . 有什么帮助吗??
  • 是的,我正在看。请不要纠缠我帮你,那不好。我没有为此得到报酬,我这样做是出于我的好心。如果您想缠着人们帮助您,StackOverflow 不是您要去的地方。有一点耐心...
  • 我创建了一个包含 3 个活动的小型测试程序:A、B 和 C。我为 ActivityA 设置了 `android:clearTaskOnLaunch'。我启动了应用程序。 ActivityA 启动 ActivityB,后者启动 ActivityC。所有 3 个活动都在活动堆栈中。我按下主页按钮。应用程序进入后台。我再次启动应用程序。我看到了 ActivityA。
  • 我想我现在明白了这个问题。您已经在登录活动中调用了finish(),对吧?您需要确保您的 root 活动作为第一个活动留在任务中。在你想结束你的应用程序之前,你不能在它上面调用finish()。
  • 我在答案中添加了一些额外的 cmets。很高兴有帮助。下次尝试多一点耐心,你会得到更多的帮助。
猜你喜欢
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多