重启app_app自动重启 - CSDN
精华内容
参与话题
  • 但是项目中用的网络框架Retrofit2,不重启ip地址切换是不会生效的,所以导致走了很多弯路,不断的查资料,才知道是网络框架Retrofit2导致的,所以第一次设置以后,点击登录,就会调用Retrofit2框架,也就是会初始化,...

    今天就简单的总结一下,因为项目需要动态设置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存储的。
    展开全文
  • android上重启app

    2019-08-07 16:12:10
    /**开启一个新的服务,用来重启APP*/ Intent LaunchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); LaunchIntent.addF...
     /**开启一个新的服务,用来重启本APP*/
                                Intent LaunchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
                                LaunchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                context.startActivity(LaunchIntent);
    
                                /**杀死整个进程**/
                                android.os.Process.killProcess(android.os.Process.myPid());
    
    展开全文
  • Android APP重启的几种方法

    千次阅读 2018-11-27 14:07:09
    项目开发过程中需要实现重启App的功能,常用的可行方案有: 1. 使用 FLAG_ACTIVITY_CLEAR_TOP : new Handler().postDelayed(new Runnable() { @Override public void run() { ...

    项目开发过程中需要实现重启App的功能,常用的可行方案有:

    1. 使用 FLAG_ACTIVITY_CLEAR_TOP :

    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(getApplication().getPackageName());
                            LaunchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(LaunchIntent);
                        }
                    }, 100);// 1秒钟后重启应用

    2. 使用 AlarmManager :

    Intent intent = getPackageManager()
                            .getLaunchIntentForPackage(getApplication().getPackageName());
                    PendingIntent restartIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
                    AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
                    mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重启应用
                    System.exit(0);

    3.使用Service

    开启一个Service,然后自己杀死APP的进程,最后在Service里通过包名来启动一个APP并销毁Service。

    (1)RestartAPPTool.java

    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);
        }
    }

    (2)killSelfService.java

    public class killSelfService extends Service {
        /**关闭应用后多久重新启动*/
        private static  long stopDelayed=50;
        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",50);
            PackageName=intent.getStringExtra("PackageName");
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    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;
        }
    
    }

    (3)需要在AndroidManifest.xml中注册Service

    <service
                android:process=":restart"
                android:name="com.example.administrator.myapplication.killSelfService" />

    (4)在需要的地方调用即可

    RestartAPPTool.restartAPP(getApplicationContext(),100);

     

    展开全文
  • android 重启自身app

    万次阅读 2018-07-19 17:13:50
    方法一: ...public static void reStartApp()  {  Intent intent = new Intent(s_inst, SplashActivity.class);  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  s_inst.startActivity...

    方法一:     

    public static void reStartApp()
         {
            Intent intent = new Intent(s_inst, SplashActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            s_inst.startActivity(intent);
            android.os.Process.killProcess(android.os.Process.myPid());
         }

    在setFlag 的时候,有的set为 FLAG_ACTIVITY_CLEAR_TOP, 至于两者的区别,这里有篇文章,有兴趣的朋友可以看下:https://blog.csdn.net/weixin_38801333/article/details/76846311

    方法二:

    Intent intent = getBaseContext().getPackageManager()
                    .getLaunchIntentForPackage(getBaseContext().getPackageName());
             PendingIntent restartIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
            AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
            mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent); // 1秒钟后重启应用
            System.exit(0);

    除了两者之外,还有一篇感觉是比较合理的,链接如下:https://www.jianshu.com/p/6321c7bfb443。 不过,我参照这种方法做的时候,有时候不会重启App,也可能是我的做法不对,有兴趣的朋友可以试试,同时,欢迎大家给出更好的方法。

    展开全文
  • 重启APP

    2017-02-14 23:41:29
    a. 使用 FLAG_ACTIVITY_CLEAR_TOP : Intent i = getBaseContext().getPackageManager() .getLaunchIntentForPackage(getBaseContext().getPackageName()); i.addFlags(Intent.FLAG_A
  • 关于实现重启 App 的两种思路

    千次阅读 2020-04-24 19:11:56
    方案1:创建一个服务类,在该类中创建一个定时器,每隔一段时间触发该定时器,并获取到系统时间与指定重启的时间做匹配,匹配成功的话,发送一条广播,在广播中处理重启 App 逻辑。 方案2:监听系统时间广播,...
  • Android重启app功能实现

    千次阅读 2016-06-03 17:10:05
    今天在做一个热修复的功能,发现有时需要重启app后修复代码才能生效,所以简单调查了下重启的方案,进而分享给大家~
  • Android 重启app的一些方法

    万次阅读 2015-03-06 15:27:03
    有的时候需要重新启动app,有两种可行的方案
  • android重启自身应用APP

    万次阅读 2020-06-12 10:36:37
    重新启动自身应用比较简单: private void restartApplication... //重新打开app启动页 final Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName()); intent.addFlags(Intent...
  • android关闭重启app

    千次阅读 2017-09-06 17:09:20
    最近项目中需要关闭app和重启app两个功能。 之前项目用的fragment,后来改成了activity,发现关闭和重启app功能不能用了,解决问题后总结一下 当项目用的fragment时: 关闭app: final Intent intent = new ...
  • Android 切换系统语言后,重启App

    千次阅读 2016-09-21 19:47:07
    问题描述:App->改变系统语言->重进App后,最近的...解决方案:App->改变系统语言->重进App后,最近的Activity走到onCreate()方法时,检测系统语言是否改变,如果是,就重启App。 LanguageUtil.classpackage com.barry.comm
  • Android崩溃后重启App心得

    千次阅读 2016-01-27 10:34:12
    App崩溃后要进行统计重启,主要就是application 继承Thread.UncaughtExceptionHandler
  • 依此顺序打开,并对Activity A 调用finish()方法,然后按HOME键返回到桌面,然后如果系统在此时杀死了这三个Activity所在的进程,那么在再次点击该app的启动图标后,怎么样才能重新回到Activity A,重新开始启动,就...
  • 请问:**①app被杀死重启后为何会留有被杀死前打开的Activity,或者说并没有被杀死??**(使用网上所说小米手机的各种解决方法,给app加锁,电量模式里设置等多种方法,不过手机原来这些设置也都是关闭的,故使用给...
  • 通过文字简单记录一下: 1.当我们在华为手机上打开一个应用,将应用退至后台进程中。 2.打开 “设置”去更改该应用的权限(比如将“存储”权限由授权状态改为非授权状态)。 3.再将该应用重新切换到前台,会发现...
  • 问题描述:App第一次安装后打开,退到后台再次进入应用时候,之前的页面不保留,App重新启动。问题主要出现在华为手机上。解决方法:1、在App的基类BaseActivity添加方法:@Override public boolean moveTaskToBack...
  • app崩溃后捕获异常或自动重启

    万次阅读 2014-11-16 23:22:49
    假如你开发的app有这个需求的话:崩溃后自动重启。你可以参照下文:
  • android app崩溃后自动重启

    千次阅读 2017-07-05 14:11:25
    因为未知原因,重启后fragment显示有误,需要杀死进程后才能正常适应app。悲剧的是,因为马上就重启进程 了,导致LOG中看不到异常原因。非常不好调试。 2.经过查资料得知,这些都是google的一种策略,当app崩溃后,...
  • APP在后台运行的时候时常会发生被系统回收的事情,可能是内存不足的多种原因造成...一种比较比较好的方式就是在被系统回收后,重启app的时候就重新唤起app这个在网上有比较好的解决方式了http://www.2cto.com/kf/20160
  • Android 重启应用程序 的两种方式

    万次阅读 2017-04-12 09:51:21
    重启应用程序 的两种方式
1 2 3 4 5 ... 20
收藏数 179,548
精华内容 71,819
关键字:

重启app