Android中重启APP应用程序

今天就简单的总结一下,因为项目需要动态设置IP地址,也就是用户自己输入不同的IP地址以后,可以登录进去。

但是项目中用的网络框架Retrofit2,不重启ip地址切换是不会生效的,所以导致走了很多弯路,不断的查资料,才知道是网络框架Retrofit2导致的,所以第一次设置以后,点击登录,就会调用Retrofit2框架,也就是会初始化,而网络框架初始化以后就不能修改地址了,当第二次修改地址的时候,看到APP上面修改成功了,但是实际上打印网络请求头的时候,还是第一次设置的那个。

那么怎么办呢?于是我想到了重启APP,既然要重启,直接关闭了不打开是不是会导致用户以为崩了,体验非常不好,所以不断的在网上找方法,终于找到一个能用的。好多方法都是只关闭了并不能打开。

这里也是写这篇博客的原因,因为我的小米8(目前安卓10系统)实测是可以用的。

直接看代码

   //因为网络框架是Retrofit2,不重启ip地址切换不会生效,所以这里是重启APP并跳转到对应的页面
        Intent intent = new Intent(this, Login2Activity.class);
        intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
//                intent.putExtra(KEY_RESTART_INTENT, nextIntent);
        this.startActivity(intent);
        if (this instanceof Activity) {
            ((Activity) this).finish();
        }

        Runtime.getRuntime().exit(0);

就这一段,我把这一段放在了地址设置的页面,当点击设置地址按钮的时候,APP会本地存储地址,存储成功以后,执行以上的方法,然后自动重启并且进入到登录页面(Login2Activity.class),因为做了本地记录,所以再次登录的时候,进入就会执行新的APP请求地址了。

最后,记得把网络请求头改一下 哦,本来是


    public  static final String BASE_URL = MainApplication.getApiAddress();

要去掉final,所以改成

//动态地址,所以没有final
    public  static  String BASE_URL = MainApplication.getApiAddress();
MainApplication.getApiAddress()也就是我本地存储的网络地址啦,这里就不贴出来了,用Preference存储的。

你可能感兴趣的:(原创)