美文网首页IT技术Android知识
android比较便捷的重启APP的方法

android比较便捷的重启APP的方法

作者: 13itch | 来源:发表于2016-08-25 18:26 被阅读20752次

    前言:

           开发过程中,有项需求需要重启APP,谷歌之后都是清一色的代码,可惜自己试了之后真心没用,只能自己想办法了。(PS:百度就算了,对于程序员来说,百度简直就是“玩具度”。个人感言,不喜勿喷)

    正文:

           其实原来很简单,就是先开启一个Service,然后自己杀死APP的进程,最后在Service里通过包名来启动一个APP并销毁Service

    代码如下:

    /**
     * 此工具类用来重启APP,只是单纯的重启,不做任何处理。
     * Created by 13itch on 2016/8/5.
     */
    public class RestartAPPTool {
    
        /**
         * 重启整个APP
         * @param context
         * @param Delayed 延迟多少毫秒
         */
        public static void restartAPP(Context context,long Delayed){
    
            /**开启一个新的服务,用来重启本APP*/
            Intent intent1=new Intent(context,killSelfService.class);
            intent1.putExtra("PackageName",context.getPackageName());
            intent1.putExtra("Delayed",Delayed);
            context.startService(intent1);
    
            /**杀死整个进程**/
            android.os.Process.killProcess(android.os.Process.myPid());
        }
        /***重启整个APP*/
        public static void restartAPP(Context context){
            restartAPP(context,2000);
        }
    }
    
    /***
     * 该服务只用来让APP重启,生命周期也仅仅是只是重启APP。重启完即自我杀死
     */
    public class killSelfService extends Service {
        /**关闭应用后多久重新启动*/
        private static  long stopDelayed=2000;
        private Handler handler;
        private String PackageName;
        public killSelfService() {
            handler=new Handler();
        }
    
        @Override
        public int onStartCommand(final Intent intent, int flags, int startId) {
            stopDelayed=intent.getLongExtra("Delayed",2000);
            PackageName=intent.getStringExtra("PackageName");
            handler.postDelayed(()->{
                    Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName);
                    startActivity(LaunchIntent);
                    killSelfService.this.stopSelf();
            },stopDelayed);
            return super.onStartCommand(intent, flags, startId);
        }
    
    
        @Override
        public IBinder onBind(Intent intent) {
           return null;
        }
    
    }```
    
           最后别忘了,在**AndroidManifest.xml**文件中去注册Service哦
    

    <service
    android:name=".restart_app.killSelfService"
    />

    
    #亦可当作废话:
    &#160; &#160; &#160; &#160;其实程序员的工作过程就是学习和积累的过程,本身APP重启是一件很简单的小事,但当你下次需要此功能时,又得重新写一遍重启代码,这恶心的事真不适合我们伟大的(diao si)的程序员,所以我的个人建议是不断的把自己需要的代码积累成一个Library,打包成AAR也好,JAR包亦可以。当你不断地积累,不断的重构,不断的封装,总有一天会有属于自己的lib。这时你会发现,开发速度加快了。各种原先项目里的单独模块,不需要单独测试了,可以直接加入现有项目。多方便啊。

    相关文章

      网友评论

        本文标题:android比较便捷的重启APP的方法

        本文链接:https://www.haomeiwen.com/subject/lydasttx.html