2017-01-11 9 views
0

私はメインアクティビティをフォアグラウンドに持ってきようとしたときにSecondActivityでOnDestroyメソッドが呼び出される問題に遭遇しています。この方法は、デモ・アプリケーションで呼び出されていないonDestroy私はフォアグラウンド(Module1の)にMainActivityを持って来る時はいつでも、しかしonDestroy方法は、私のメインのプロジェクトに呼び出されます。.. ユースケース:私のアクティビティがバックグラウンドにプッシュされたときにonDestroyメソッドが呼び出されます

1)起動アプリ
2)MainActivityがフォアグラウンドで実行されていますSecondActivity
から
3)移動 4)は、戻るボタンをタップ - >は

注意を前面にMainActivityをもたらす:私は前面にMainActivityを持ったとき、私はOnDestroyが呼ばれるようにしたくありません。 観測:メインプロジェクトのStacktraceを見つけるために、手動で例外onDestroyをスローしました。以下の例外を見つけてください。 MainActivityをフォアグラウンドにすると、MainActivityのアクションを実行するとすぐにSecondActivityが殺されます。たManifest.xml

<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true"> 
     <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" 
      android:label="@string/activity_name" android:noHistory="false" 
      android:screenOrientation="portrait" 
      android:launchMode="singleTop" android:name="MainActivity" 
      android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize"> 
      <intent-filter android:label="@string/launcher_name"> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

のModule1:デモアプリケーションと私のプロジェクトでは、私は...活動の間

Exception: 
01-11 18:16:43.806 29045-29045/c W/System.err:  at com.test.abc.mashup.SecondActivity.onDestroy(SecondActivity.java:240) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.app.Activity.performDestroy(Activity.java:7102) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1170) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:5039) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:5084) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.app.ActivityThread.access$1700(ActivityThread.java:221) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1853) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.os.Looper.loop(Looper.java:158) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:7224) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
01-11 18:16:43.806 29045-29045/c W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
01-11 18:16:44.931 29045-29045/c D/ViewRootImpl: #3 mView = null 
01-11 18:16:44.966 29045-29045/c I/Choreogr 

Module1]をナビゲートするためにコルドバのフレームワークを使用しています主な活動

receiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       //do something based on the intent's action 
       Intent nativeIntent= new Intent(context, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
       context.startActivity(nativeIntent); 

      } 
     }; 

モジュール2: Manifest.xml

<activity 
     android:launchMode="singleInstance" 
     android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
     android:name=".SecondActivity" 
     android:configChanges="screenSize|orientation"> 
    </activity> 

モジュール2:セカンド活動

// onBackPressed event 
@Override 
    public void onBackPressed() { 

     Intent intent = new Intent("com.myapp.mycustomaction"); 
     sendBroadcast(intent); 

    } 
+0

開発者モード設定で[アクティビティを保存しない]をオンにしましたか? – Kyle

+0

オフになっています... –

答えて

0

「launchMode」パラメータのドキュメントから:

「singleInstance」アクティビティは、他の一方で、そのタスクの一部であることを他の活動を許可しません。これはタスクの唯一のアクティビティです。

同じプロセス内の他のアクティビティには、次の動作が発生します起動:

、それは別のアクティビティを開始した場合、そのアクティビティは、別のタスクに割り当てられている - FLAG_ACTIVITY_NEW_TASKが意図していたかのように。

参照:https://developer.android.com/guide/topics/manifest/activity-element.html#lmode - これには、さまざまなlaunchmodeの動作を示す表が含まれています。

+0

デモアプリケーションで同じスニペットで動作するのはどういうわけかわかりませんが、プロジェクトでは機能しません。 –

+0

デモアプリケーションの使い方を指定する必要がありますメインプロジェクトさもなければ、私たちは活動がなぜ終わるか推測することができます – Kiskae

+0

私はデモアプリケーションとメインプロジェクトの間に違いは見られません。マニフェストと他のコードが同じであるように見えます。この時点で何が違いになるのかは分かりません。 –

関連する問題