0

3つのアクティビティがあり、AからB、BからCに移動します。スタックはCBAです(Cが上にあります)。Cアクティビティには、間隔ごとに機能するRunnableがあり、UIを更新するWebサービスに接続します。アクティビティCがバックグラウンドになり、破棄されてから再びフォアグラウンドになると、タスクはメインのアクティビティ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:そしてアクティビティを呼び出すためのコード:

メインアクティビティ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); 
4

1 に答える 1

1

どれが問題だったか知っています。アプリケーションはバックグラウンドでクラッシュしますが、例外がキャッチされました。これにより、アプリがバックグラウンドで再起動され、誤解を招きます。:-S

于 2012-08-16T09:55:59.847 に答える