android重启APP

来源:互联网 发布:空间大师软件 编辑:程序博客网 时间:2024/06/05 00:23

一、启动另一个APP

代码比较简单,直接贴上:

     try {            PackageManager packageManager = getActivity().getPackageManager();            Intent intent=new Intent();            intent = packageManager.getLaunchIntentForPackage("com.maiji.textviewchangedemo"); //这里参数就是你要打开的app的包名            startActivity(intent);        } catch (Exception e) {            Log.e("打开另外一个应用出错",e.getMessage());   //未打开,可能要打开的app没有安装,需要再此进行处理        }

2、重启本APP

a. 使用 FLAG_ACTIVITY_CLEAR_TOP :

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

b. 使用 AlarmManager :

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

c. 开启一个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=".killSelfService" />
原创粉丝点击