最近在做项目,苦逼了的。边学边做。。。
有重启任务,在网络上找资料,一堆的重启的代码。
那么,目前看到的代码一般来说有两种作用,我一开始使用的是如下的代码:
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。还有一种方式,我没有用过,有兴趣的可以自己找到实验实验。