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

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

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

谢谢大神们 !

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(4)
洪涛

可以自己下一個佇列去控制所有Activity,程式碼如下:

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

在你的BaseActivity中的onCreate方法中加入:

ActivityUtils.addActivity(this);

然後在你需要的地方呼叫

ActivityUtils.finishAllActivity();

希望對你有幫助

左手右手慢动作

Application裡面監聽打開的Activity,點擊按鈕後殺死所有Activity

application.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {}
左手右手慢动作

看來沒人回答,我就貼上自己的解決方法吧。
還是不知道怎樣才能完全退出APP,我就先把activity棧清空,然後殺掉進程。

ActivityManager activityMgr= (ActivityManager)this.getSystemService(ACTIVITY_SERVICE);
 activityMgr.killBackgroundProcesses(getPackageName());
 android.os.Process.killProcess(android.os.Process.myPid()); 
System.exit(0);
左手右手慢动作

定義一個Activity佇列,每個活動建立的時間都會加進去,提供一個靜態方法,finish佇列裡的所有活動

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!