react-native - android怎么在一个非activity类里面重启app
阿神
阿神 2017-04-18 09:18:41
0
4
515

stackoverflow翻了个遍也没找到解决办法。就很简单的一个功能,我实现了一个热更新功能,想在更新后重启app以应用此更新,因为如果不重启的话,此热更新根本不会立即应用。

Intent i = mContext.getPackageManager().getLaunchIntentForPackage(mContext.getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivity(i);

用了这个方法,调用后程序会弹出一个提示框,说抱歉,程序已经终止运行,然后就关闭了(有时候屏幕会闪一下,看起来好像重启了,但实际确没更新)。请教大家有什么办法没有?

阿神
阿神

闭关修行中......

répondre à tous(4)
迷茫

Essayez cette méthode et voyez si elle fonctionne
ActivityManager am = (ActivityManager) mContext.getSystemService(mContext.ACTIVITY_SERVICE);
am.restartPackage("packageName");

巴扎黑

Cette fonctionnalité « simple » est tout sauf simple ! Tout comme "comment s'assurer que le processus de candidature n'est pas interrompu" n'est pas simple, une application tierce elle-même n'a pas la possibilité de se redémarrer. Mais ce n'est pas impossible, jni forge le processus pour implémenter le démon de processus, mais ce n'est pas simple. Si vous êtes intéressé, vous pouvez le rechercher sur Google.

阿神

Je ne sais pas s'il faut redémarrer le processus de l'application ou redémarrer l'activité ?
Si vous souhaitez redémarrer l'activité,

Intent intent = new Intent(mContext, ...);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivity(i);

Si vous souhaitez redémarrer le processus, il ne semble pas y avoir de bon moyen. Pour redémarrer le processus, vous devez d'abord le tuer :

android.os.Process.killProcess(android.os.Process.myPid());

L'étape suivante consiste à redémarrer, car le processus a été tué et il doit s'appuyer sur le système pour y parvenir. Il semble que cela puisse être réalisé via la diffusion ou le service, je ne l'ai pas fait spécifiquement, donc Google. c'est moi-même

伊谢尔伦

i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
改成
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
试试

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal