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> 在:0 在 Xamarin.UITest.Android.AndroidApp..ctor (IAndroidAppConfiguration appConfiguration) <0x7cacab8 + 0x0073b> 在:0 在 Xamarin.UITest.Configuration.AndroidAppConfigurator.StartApp (AppDataMode appDataMode) <0x7cac008 + 0x00063> 在:0 在 YH.MB.Test.AppInitializer.StartApp(平台平台)<0x7cab060 + 0x00027> 在:0 在 YH.MB.Test.Tests.BeforeEachTest () <0x7cab010 + 0x00013> 在:0 在 (包装器托管到本机) 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

当我在三星 s3(在 xamarin 测试云上)上尝试它时,也有一个 StackTrace;

java.lang.NullPointerException: key == 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章)

我不能在调试模式下重复这个问题。会是什么?

我的 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