Android 如果从文件夹打开后单击主屏幕图标,应用程序将重新启动,反之亦然,但前提是从 Play Market 下载

Android application restarts if homescreen icon clicked after opened from folder and vice versa but only if downloaded from Play Market

也许有人遇到过这个错误。令人心碎。

我开发了一个应用程序。如果我将它旁加载到我的 android 设备 Samsung J1,它工作正常。我的意思是通过浏览器从我的网站调试或加载。它安装到应用程序文件夹中。我在主屏幕安装后以通常的方式创建了一个快捷方式,只需按住应用程序文件夹中的图标,我们就会得到在调试过程中遇到的预期行为。

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

1) 从应用程序文件夹中打开应用程序,对应用程序进行任何操作。转到主屏幕,执行任何操作,然后从主屏幕快捷方式或应用程序文件夹中重新打开应用程序,应用程序恢复。那完全没问题。我们可以从完成的地方开始。

如果从 google Play 商店下载会出现意外行为

1) 从主屏幕启动应用程序。转到应用程序文件夹,按下应用程序图标,应用程序再次启动,并且由于应用程序内部的业务逻辑而发生了不好的事情。反之亦然。从应用程序文件夹启动应用程序,转到主屏幕并单击应用程序图标应用程序重新启动,不恢复。

Play 商店对应用进行了更改,并发生了这种情况。我还注意到,从商店下载时,包的大小要小得多,所以它肯定会对文件做一些事情。

无论如何,似乎有很多帖子解决了这个问题,但我找不到所描述的完全相同的情况,所以希望对这个实例的解决可以为社区做出宝贵的贡献。谢谢!

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

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

将下面的代码粘贴到主要 activity class 代码之上。注意添加的 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());
    }
}