0

こんにちは、私の Android アプリケーションが起動時に動かなくなることがあります。Xamarin テスト クラウドでは、失敗は次のように見えます。

SetUp : System.TimeoutException : 待機中にタイムアウトしました... Xamarin.UITest.Shared.WaitForHelper.WaitFor で (System.Func 1 predicate, System.String timeoutMessage, Nullable1 タイムアウト、Nullable1 retryFrequency, Nullable1 postTimeout) <0x7e4c998 + 0x004db> in :0 at Xamarin.UITest.Android.AndroidApp..ctor (IAndroidAppConfiguration appConfiguration) <0x7cacab8 + 0x0073b> in :0 at Xamarin.UITest.Configuration.AndroidAppConfigurator.StartApp (AppDataMode appDataMode) <0x7cac008 + 0x00063> in :0 at YH.MB.Test.AppInitializer.StartApp (プラットフォーム プラットフォーム) <0x7cab060 + 0x00027> in :0 at YH.MB.Test.Tests.BeforeEachTest () <0x7cab010 + 0x00013> in :0 at (ラッパー管理からネイティブへ) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System. Reflection.Binder バインダー、System.Object[] パラメータ、System.Globalization.CultureInfo カルチャ) <0x3249110 + 0x00093> in :0

Samsung s3 (xamarin テスト クラウド上) で試したところ、StackTrace もありました。

java.lang.NullPointerException: キー == null

android.util.LruCache.get(LruCache.java: 113) で com.android.providers.settings.SettingsProvider$SettingsCache.isRedundantSetValue(SettingsProvider.java: 872) で com.android.providers.settings.SettingsProvider.insert(SettingsProvider .java: 574) で android.content.ContentProvider$Transport.insert(ContentProvider.java: 201) で android.content.ContentProviderNative.onTransact(ContentProviderNative.java: 148) で android.os.Binder.execTransact(Binder.java: 367) dalvik.system.NativeStart.run で (ネイティブ メソッド: )

デバッグ モードでその問題を繰り返すことはできません。それは何でしょうか?

私の Android OnCreate メソッドは次のとおりです。

protected override void OnCreate(Bundle bundle)
        {

            // set the layout resources first
            ToolbarResource = Resource.Layout.toolbar;
            TabLayoutResource = Resource.Layout.tabs;

            base.OnCreate(bundle);
            Forms.Init(this, bundle);

            #if ENABLE_TEST_CLOUD
                Xamarin.Forms.Forms.ViewInitialized += (object sender, Xamarin.Forms.ViewInitializedEventArgs e) =>
                {
                    if (!string.IsNullOrWhiteSpace(e.View.AutomationId))
                    {
                        e.NativeView.ContentDescription = e.View.AutomationId;
                    }
                };
            #endif

            var container = new SimpleContainer();

            container.Register<IDevice>(t => AndroidDevice.CurrentDevice);
            container.Register<IDisplay>(t => t.Resolve<IDevice>().Display);
            container.Register<IMediaPicker>(t => new MediaPicker());
            container.Register<IFontManager>(t => new FontManager(t.Resolve<IDisplay>()));
            container.Register<INetwork>(t => t.Resolve<IDevice>().Network);
            container.Register<IJsonSerializer, MBJsonSerializer>();
            container.Register<IPhoneService, PhoneService>();
            container.Register<IUserDialogs>(t => UserDialogs.Instance);

            if (!Resolver.IsSet)
                Resolver.SetResolver(container.GetResolver());

            UserDialogs.Init(this);

            LoadApplication(new App());
        }

        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
        {
            PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }

私のUITestセットアップメソッド;

 [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class Tests
    {
        IApp app;
        Platform platform;


        public Tests(Platform platform)
        {
            this.platform = platform;

        }

        [SetUp]
        public void BeforeEachTest()
        {
            app = AppInitializer.StartApp(platform);
        }
}

前もって感謝します。

4

0 に答える 0