recherche

Maison  >  Questions et réponses  >  le corps du texte

android退出APP问题?

我在一个Android APP里面给notification设置了个按钮,希望点击之后能够退出APP,停止一切用到的服务(例如:科大讯飞的语音识别服务,自己启动的一些service,打开过的activity)。
我用了以下两种方法
System.exit(0)
Process.killProcess(Process.myPid()) 

但是都不能完全退出APP,可以杀死service,也可以停止语音识别等服务,但是没有退出activity,按下home键把应用后台了之后点击那个停止按钮之后打开APP没有从头开始启动第一次打开的launch页面,而是直接打开了刚刚后台了的时候开着的activity。

我该怎么准确退出这个APP回到那种什么都没开过的那种初始状态。

谢谢大神们 !

高洛峰高洛峰2772 Il y a quelques jours469

répondre à tous(4)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 09:08:09

    Vous pouvez contrôler toutes les activités dans votre propre file d'attente. Le code est le suivant :

    public class ActivityUtils {
    
        private static List<Activity> activities = new ArrayList<>();
        
        public static void addActivity(Activity activity) {
            activities.add(activity);
        }
    
        /**
         * 关闭所有Activity
         */
        public static void finishAllActivity() {
            for (Activity activity : activities) {
                if (!activity.isFinishing()) {
                    activity.finish();
                }
            }
        }
    }

    Ajoutez la méthode onCreate dans votre BaseActivity :

    ActivityUtils.addActivity(this);

    Alors appelez

    là où vous en avez besoin
    ActivityUtils.finishAllActivity();

    J'espère que cela vous aidera

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:08:09

    Écoutez les activités ouvertes dans l'application et supprimez toutes les activités après avoir cliqué sur le bouton

    application.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {}

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:08:09

    Il semble que personne n'ait répondu, je vais donc publier ma propre solution.
    Je ne sais toujours pas comment quitter complètement l'application, j'efface donc d'abord la pile d'activités, puis je tue le processus.

    ActivityManager activityMgr= (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
     activityMgr.killBackgroundProcesses(getPackageName());
     android.os.Process.killProcess(android.os.Process.myPid()); 
    System.exit(0);

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:08:09

    Définissez une file d'attente d'activités, ajoutez chaque activité lors de sa création et fournissez une méthode statique pour terminer toutes les activités de la file d'attente

    répondre
    0
  • Annulerrépondre