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

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

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

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

阿神
阿神

闭关修行中......

membalas semua(4)
迷茫

Cuba kaedah ini dan lihat jika ia berkesan
ActivityManager am = (ActivityManager) mContext.getSystemService(mContext.ACTIVITY_SERVICE);
am.restartPackage("packageName");

巴扎黑

Ciri "mudah" ini tidak lain adalah mudah! Sama seperti "bagaimana untuk memastikan bahawa proses permohonan tidak dibunuh" tidak mudah, jadi aplikasi pihak ketiga itu sendiri tidak mempunyai keupayaan untuk memulakan semula dirinya sendiri. Tetapi tidak mustahil, jni memotong proses untuk melaksanakan proses daemon, tetapi ia tidak mudah jika anda berminat, anda boleh Google.

阿神

Saya tidak tahu sama ada hendak memulakan semula proses Apl atau memulakan semula Aktiviti?
Jika anda mahu memulakan semula Aktiviti, cuma

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

Jika anda ingin memulakan semula proses, nampaknya tiada cara yang baik untuk memulakan semula proses, anda perlu mematikan proses terlebih dahulu:

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

Langkah seterusnya adalah untuk memulakan semula, kerana proses itu telah dimatikan, dan ia perlu bergantung pada sistem untuk mencapainya Nampaknya ia boleh dicapai melalui siaran atau perkhidmatan saya tidak melakukannya secara khusus, jadi google itu sendiri

伊谢尔伦

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan