志尊宝
2018-06-25 12:29
采纳率: 100%
浏览 3.7k

Android 程序退出后重新启动程序

最近做个项目,需要让程序退出后,再次启动程序,哪位大佬可以指点一下,

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

12条回答 默认 最新

  • 卖酒的程序员 2018-06-25 14:17
    已采纳

    这块需要用到NDK双进程守护,用c语言fork一个服务进程,当apk退出时,守护服务进程再次拉起apk,具体实现操作建议查看腾讯课堂-动脑学院-NDK双进程守护那个免费视频,你就会得到想要的结果,希望给个分

    点赞 打赏 评论
  • 霸王龙... 2018-06-25 12:38

    建议写一个服务,服务可以做到重启,然后用服务唤醒程序。

    点赞 打赏 评论
  • weixin_42445301 2018-06-25 12:40

    使用android.os.Process.killProcess(android.os.Process.myPid());退出应用,但存在Activity没有调用finish方法。AMS会重新开启一个线程来从onCreate新建该Activity

    点赞 打赏 评论
  • Zzz酆都城 2018-06-25 16:17

    使用kill process退出应用时,记得在Activity之间跳转时(即startActivity后,调用finish方法)。

    点赞 打赏 评论
  • maogedadada 2018-06-26 01:19

    在ActivityLifecycleCallbacks的onActivityPaused中操作退出程序,思路在这了,具体怎么实现我就不说了,网上一大推ActivityLifecycleCallback的用法

    点赞 打赏 评论
  • Tobin-csdn 2018-06-26 02:06

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

                        或者 
    
                        public void restartApp(){    
            Intent intent = new Intent(instance,MainActivity.class);    
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
            instance.startActivity(intent);    
            android.os.Process.killProcess(android.os.Process.myPid());  //结束进程之前可以把你程序的注销或者退出代码放在这段代码之前    
        }  
    
    点赞 打赏 评论
  • weixin_41607786 2018-06-26 02:45

    调用finish方法

    点赞 打赏 评论
  • baidu_28032147 2018-06-26 02:48

    使用android.os.Process.killProcess(android.os.Process.myPid());退出应用,AMS会重新开启一个线程来从onCreate新建该Activity使用kill process退出应用时,记得在Activity之间跳转时(即startActivity后,调用finish方法)。

    点赞 打赏 评论
  • 游唱小时候 2018-06-26 04:02

    使用系统事件去实现,比如注册接收一个自动更新的广播

    public class UpdateReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    if (intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")) {

            Toast.makeText(context, "版本更新完成,重新启动此程序", Toast.LENGTH_SHORT).show();
    
            Intent intent2 = new Intent(context, MainActivity.class);
            intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent2);
    
            //接收安装广播
            if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
                String packageName = intent.getDataString();
                Log.i(this.getClass().getName(), "DownLoadApk:安装了:" + packageName + "包名的程序");
            }
    
            //接收卸载广播
            if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
                String packageName = intent.getDataString();
                Log.i(this.getClass().getName(), "DownLoadApk:卸载了:" + packageName + "包名的程序");
    
            }
        }
    
    }
    

    }

    点赞 打赏 评论
  • qq_22996693 2018-06-26 07:56

    要实现杀不死的进程需要通过jni进行双进程守护

    点赞 打赏 评论
  • dczu110 2018-06-28 02:30

    需要一个守护进程,简单的实现方式,可以两个进度时刻发心跳,如果其中一个进度被关闭,可以通过守护进程重新启动程序。

    点赞 打赏 评论
  • zhangxiang_net 2018-07-02 06:54

    调用相应的函数接口,创建父子进程,父进程监视程序是否退出,子进程重新拉起程序。

    点赞 打赏 评论

相关推荐 更多相似问题