【问题标题】:When activity comes foreground go to main activity not to top of the stack当活动进入前台时,转到主要活动而不是堆栈顶部
【发布时间】:2012-08-04 17:05:08
【问题描述】:

我有 3 个活动,然后我从 A 导航到 B,从 B 导航到 C。堆栈是 C-B-A(顶部是 C)。 C Activity 有一个 Runnable,可以在每个时间间隔运行,并连接到更新 UI 的 Web 服务。如果 Activity C 进入后台,被销毁,然后再次进入前台,则任务从 de main Activity A 开始。我想回到 C 活动。有可能吗?

在模拟器中运行良好,但在我的智能手机中只运行了这个应用程序,总是破坏整个应用程序..我可以做些什么吗?如果我提供与 UI 分离的服务,是否可以改善这一点?

Edit2:我在 AndroidManifest 上尝试这个声明

    <activity android:name=".ActivityA" android:label="@string/app_name" 
        android:alwaysRetainTaskState="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />    
        </intent-filter> 
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/> 
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="oauthht" android:host="hattrick"/>
        </intent-filter>          
    </activity>
    <activity android:name=".ActivityB" android:label="@string/ActivityB"
              android:screenOrientation="portrait"></activity>
    <activity android:name=".ActivityC" android:label="@string/ActivityC" 
              android:screenOrientation="portrait"
              android:launchMode="singleTask">

Edit2:以及调用活动的代码:

在主Activity A中:

public void onClickButtonB(View button) { 
    Intent intent = new Intent();
    intent.setComponent(new ComponentName(this,ActivityB.class));
    startActivity(intent);
}

在活动 B 中:

 Bundle bundle = new Bundle();
 bundle.putLong("selectedMatch", matchID);           

 Intent liveIntent = new Intent(); 
 liveIntent.setComponent(new ComponentName(ActivityB.this, ActivityC.class));
 liveIntent.putExtras(bundle);
 startActivity(liveIntent); 

【问题讨论】:

  • 听起来您的 Activity C 可以/应该是在后台运行的服务。
  • Themanatuf 对我来说是零。
  • 您如何在代码中启动您的活动?请附上代码。听起来您包含了破坏默认行为的标志。
  • 请在代码中发布您如何启动活动以及活动 B 的清单声明。
  • 谢谢!现在我放了代码,我把所有的东西都放在了清单中(activityA 是错误的).. 也许问题出在 ActivityA 的意图过滤器上?

标签: android android-activity lifecycle android-lifecycle


【解决方案1】:

我知道问题出在哪里。应用程序在后台崩溃,但异常被捕获。这会在后台重新启动应用程序并误导我。 :-S

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多