2017-07-07 3 views
0

Peut-être que quelqu'un a rencontré cette erreur. C'est un briseur d'esprit.L'application Android redémarre si l'icône de l'écran d'accueil est cliquée après l'ouverture du dossier et vice versa, mais seulement si elle a été téléchargée depuis Play Market

J'ai développé une application. Si je sideload à mon appareil Android Samsung J1 ça fonctionne bien. Je veux dire déboguer ou charger de mon site Web via le navigateur. Il s'installe dans le dossier des applications. Je crée un raccourci pour l'écran d'accueil de la manière habituelle après il est installé en maintenant simplement l'icône dans le dossier applications et nous obtenons le comportement attendu qui a été rencontré pendant le débogage.

Comportement attendu (qui est également le comportement si sideloaded, téléchargé du site Web via le navigateur sur l'appareil) fonctionne très bien!

1) Ouvrez l'application depuis le dossier de l'application, faites-le avec l'application. Aller à l'écran d'accueil, faire quoi que ce soit et re ouvrir l'application à partir du raccourci de l'écran d'accueil ou du dossier des applications l'application reprend. C'est totalement bien. Nous pouvons commencer d'où nous avons fini.

Comportement inattendu si téléchargé du magasin de jeu de Google

1) Lancer l'application de l'écran d'accueil. Allez dans le dossier de l'application, appuyez sur l'icône de l'application, l'application démarre à nouveau et les mauvaises choses se produisent parce que ot la logique métier à l'intérieur de l'application. Vice versa même chose. Démarrez l'application à partir du dossier de l'application, accédez à l'écran d'accueil et cliquez sur l'icône de l'application, redémarre, ne reprend pas.

Play Store apporte des modifications à l'application et cela se produit. Aussi, j'ai remarqué que la taille du paquet est nettement plus petite lors du téléchargement du magasin, donc il fait définitivement quelque chose pour les fichiers. Quoi qu'il en soit, il semble qu'il y ait pas mal de messages qui traitent de ce problème, mais je n'ai pas trouvé exactement la même situation décrite. Nous espérons donc qu'une solution apportée à cette instance pourrait apporter une contribution précieuse à la communauté. Merci!

+0

essayez d'installer HockeyApp pour récupérer plantages de votre application. Êtes-vous sûr que sur le Play Store, vous n'utilisez pas la version "Release" (de votre studio visuel) et la version "Debug" dans d'autres cas? – hugoterelle

+0

C'est toujours la version 100%. En passant, j'ai oublié de mentionner que je construis tout en utilisant Xamarin Visual Studio 17. Merci pour cette suggestion, le hockey devrait peut-être aider à d'autres problèmes. –

+0

Etes-vous sûr qu'aucune exception n'est levée au niveau donné et ne se trouve dans un autre niveau de votre application? – hugoterelle

Répondre

2

Donc, après un peu de recherche, j'ai trouvé la réponse qui a fonctionné pour moi. Dans le projet Xamarin Anroid dans MainActivity.cs, ajoutez LaunchMode = LaunchMode.SingleInstance au libellé de l'activité. Le manifeste est compilé automatiquement de sorte que vous ne pouvez pas modifier directement le fichier XML, mais que vous travaillez simplement avec le fichier de classe. Donc à la fin ça ressemble à ça.

Collez le code ci-dessous au-dessus du code de classe d'activité principale. Notez la valeur ajoutée LaunchMode = étiquette LaunchMode.SingleInstance qui ajoute en fait

<activity android:launchMode="singleInstanc>e" au 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()); 
    } 
}