app重启的一点小理解

本文探讨了两种App重启的方法。一种仅重启Activity,适用于快速刷新界面;另一种则彻底重启整个App,确保从初始状态开始,适合需要清除所有状态的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做项目,苦逼了的。边学边做。。。
有重启任务,在网络上找资料,一堆的重启的代码。
那么,目前看到的代码一般来说有两种作用,我一开始使用的是如下的代码:

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

可能上下文(Context)有点不一样。顺便复习一下上下文好了。就大致的描述一下全局Context,在脱离Activity时如何获得。

创建一个类继承自Application类,然后复写onCreate()方法,通过调用getApplicationContext得到一个应用级别的Context。
然后提供静态的getContext()方法返回刚才获取到的Context。
不知道为什么要这么麻烦,比如上面重启代码中的getBaseContext()方法就可以直接获得,getApplicationContext()也是已经直接获得的context对象了的。
切回主题,由于我需要重新登录服务器,然而上面的代码只是重启了Activity,导致服务器不能登录。故而使用了一下的重启代码:

  new Thread() {
                        @Override
                        public void run() {
                            Intent intent = new Intent(getBaseContext(), MainActivity.class);
                            PendingIntent restartIntent = PendingIntent.getActivity(getBaseContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
                            AlarmManager mgr = (AlarmManager) getBaseContext().getSystemService(Context.ALARM_SERVICE);
                            mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent);
                            android.os.Process.killProcess(android.os.Process.myPid());
                        }
                    }.start();

然后就可以完全重启app,而不是仅仅重启Activity。还有一种方式,我没有用过,有兴趣的可以自己找到实验实验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值