2015-07-24 12 views
5
üst

başka aktivite ile Unity3D Android uygulamasını geri çözülecek: UnityPlayerNativeActivity itibarenaşağıdaki sorun ihtiyacım

I (reklam ağından bir reklamla olabilir, maden olabilecek bir standart Android aktiviteyi başlıyorum - boşver). Oyun bir kullanıcı olarak, home düğmesine basarak üstündeki bu aktivite (Unity bir) ile gizli edilirken iki onu geri yükleme yolu vardır: Recently used apps ekrandan

  • - Uygulamanın restore ediliyor aynı duruma, minimize edildiğinde (olmasını beklediğim şey); Başlatıcıdan gelen
  • , oyunun UnityPlayerNativeActivity neyin neden üst üste açılmış olduğu diğer tüm aktiviteleri kaybederek geri yüklenmesine neden oluyor.

Bu etkinlikler bir şekilde kaybolur (bir şekilde tam olarak bilmediğim, onlarla ne olduğunu bilmediğim gibi). Oyunumun mantığı, orada meydana gelen süreçlerin sonucuna bağlıdır. Bilmem gerek, bu özel aktivitenin belirli bir şekilde çıkması (örneğin bir geri bildirimde bulunun).

Bu Unity etkinliğini başlatıcısından başlatıcıdan nasıl en düşük düzeye çıkarırken getirebileceğimi biliyor musunuz?

Uygulamayı geri yükleme yolları ile Recently used screen ve başlatıcı arasındaki farkı anlamak istiyorum. Sanırım, UnityPlayerNativeActivity girişinde bulunan AndroidManifest.xml dosyasındaki amaç filtre bölümü ile ilişkilidir.

cevap

2

Çözüm oldukça basit, ama çok açık değil olduğu ortaya çıktı.

Bu, Unity tarafından varsayılan olarak üretilmekte olan AndroidManifest.xml yapılandırmasının bu soruna neden olduğu ortaya çıktı. Aşağıdaki parametreler tanımlanır başlatıcıdan başlatılan ediliyor ana aktivite için (decompiled app alınan):

<activity 
     android:alwaysRetainTaskState="true" 
     android:clearTaskOnLaunch="true" 
     android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" 
     android:name="com.unity3d.player.UnityPlayerNativeActivity" 
     android:screenOrientation="fullSensor" 
     launchMode="singleTask"> 

     <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true"/> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
      <category android:name="android.intent.category.LEANBACK_LAUNCHER"/> 
     </intent-filter> 
    </activity> 

sorunlu davranışlar bu 2 parametrelerinin neden ediliyor:

android:clearTaskOnLaunch="true" 
    android:launchMode="singleTask" 

zaman I bunları, başlatıcıdan düzgün devam ettirmek için değiştirin. aşağıdaki gibi

doğru parametrelerle

ayarlanmalıdır:

<activity 
     android:alwaysRetainTaskState="true" 
     android:clearTaskOnLaunch="false" 
     android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode" 
     android:label="@string/app_name" 
     android:launchMode="standard" 
     android:name="com.unity3d.player.UnityPlayerNativeActivity" 
     android:screenOrientation="fullSensor" 
     launchMode="standard"> 

     <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true"/> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
      <category android:name="android.intent.category.LEANBACK_LAUNCHER"/> 
     </intent-filter> 
    </activity> 

Not: açıkça bu faaliyet için değeri android:clearTaskOnLaunch="false" ayarlamak mümkün pm, launchMode parametre Unity3D tarafından zorla ve "singleTask" olarak ayarlanır . Uygulamayı yeniden derleyerek ve bu değişmiş kaynaklardan yeniden oluşturmayı değiştirip kontrol etmeyi başardım. Bu değeri ayarlamak için herhangi bir zarif yol olup olmadığını merak ediyorum.