2017-07-07 40 views
0

也许有人遇到此错误。这是一个mindbreaker。如果从文件夹打开后主屏幕图标被点击后Android应用程序重新启动,反之亦然,但只有从Play市场下载时才会重新启动。

我开发了一个应用程序。如果我sideload它到我的Android设备三星J1它工作正常。我的意思是通过浏览器从我的网站调试或加载。它安装到应用程序文件夹中。我通过简单地按住应用程序文件夹中的图标来安装主屏幕后,以常用方式为主屏幕创建快捷方式,并获得在调试过程中经历的预期行为。

预期的行为(这也是行为如果sideloaded,从网站通过浏览器下载到设备上)工作正常!

1)从应用程序文件夹打开应用程序,做任何与应用程序无关。转到主屏幕,执行任何操作,然后从主屏幕快捷方式打开应用程序,或从应用程序文件夹恢复应用程序。这很好。我们可以从我们完成的地方开始。

如果从谷歌Play商店

1)从主屏幕启动应用程序下载的意外行为。转到应用程序文件夹,按下应用程序图标,应用程序再次启动,因为应用程序内的业务逻辑发生坏事。反之亦然同样的事情。从应用程序文件夹启动应用程序,进入主屏幕并点击应用程序图标应用程序重新启动,不会恢复。

Play商店对应用进行了更改,发生这种情况。另外我也注意到,从商店下载时,包装的尺寸要小得多,所以它肯定会对文件做些什么。

无论如何,似乎有不少文章解决了这个问题,但我无法找到所描述的完全相同的情况,所以希望这种情况下的解决方案能够为社区提供有价值的贡献。谢谢!

+0

尝试安装HockeyApp从应用中检索崩溃。您确定从Play商店中,您没有使用“发布”版本(来自您的visual studio)和其他情况下的“调试”版本吗? – hugoterelle

+0

它始终是发布版本的100%。那么该应用程序不会崩溃...顺便说一句,我忘了提及我正在使用Xamarin Visual Studio 17建设一切。感谢您的建议,曲棍球应该可以帮助在其他一些问题。 –

+0

你确定没有在给定的级别抛出异常,并在你的应用程序的另一个级别捕获异常吗? – hugoterelle

回答

2

所以经过一些研究,我已经找到了适合我的答案。在MainActivity.cs的Xamarin Anroid项目中,将LaunchMode = LaunchMode.SingleInstance添加到活动标签。

该宣言是自动编译的,因此您不能直接更改xml,而是只使用类文件。所以最终它看​​起来像这样。

将以下代码粘贴到主活动类代码上方。请注意添加LaunchMode = LaunchMode.SingleInstance标签,它实际上增加了

<activity android:launchMode="singleInstanc>e"到Manifesto.xml

[Activity(Label = "LavkaLavka", 
    Icon = "@drawable/icon", 
    Theme = "@style/MainTheme", 
    MainLauncher = true, 
    LaunchMode = LaunchMode.SingleInstance, 
    ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 



public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 
{ 

    protected override void OnCreate(Bundle bundle) 
    { 
     TabLayoutResource = Resource.Layout.Tabbar; 
     ToolbarResource = Resource.Layout.Toolbar; 



     base.OnCreate(bundle); 

     global::Xamarin.Forms.Forms.Init(this, bundle); 
     LoadApplication(new App()); 
    } 
} 
相关问题