日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 退出应用程序

發布時間:2024/4/15 Android 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 退出应用程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何干凈徹底地退出Android應用程序,如何干凈地關閉所有已打開的Activity? 如何關閉指定的Activity? 如何關閉一類Activity?

搜索了一下,有以下一些

1. 任務管理器方法(ActivityManager)

首先要說明該方法運行在Android 1.5 API Level為3以上才可以,
系統會將,該包下的,所有進程,服務,全部殺掉

ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);am.restartPackage(getPackageName());

要注意加上權限

<uses-permission android:name="android.permission.RESTART_PACKAGES\"></uses-permission>

2. Dalvik VM的本地方法

android.os.Process.killProcess(android.os.Process.myPid()) //獲取PID System.exit(0); //常規java、c#的標準退出法,返回值為0代表正常退出

killProcess( )需要添加權限

<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES\"></uses-permission>

3.一種比較流行的Android退出方法

使用單例模式創建一個Activity管理對象,該對象中有一個Activity容器(具體實現自己處理,使用LinkedList等)專門負責存儲新開啟的每一個Activity,容易理解、易于操作。


我的代碼就是使用第三種方法,通過創建一個 Activity界面管理工具類實現的。

package com.demo.android.model;import android.app.Activity;import com.demo.util.LogUtils;import java.util.ArrayList; import java.util.Iterator; import java.util.List;/*** Activity界面管理工具*/ public final class ActivityManager {private static List<Activity> activities = new ArrayList<Activity>();// 普通Activity/*** 添加普通Activity* * @param activity*/public static void addActivity(Activity activity) {if (activities.contains(activity)) {removeActivity(activity);}activities.add(activity);LogUtils.debug("ActivityManager--enter", activity.getClass().getSimpleName());}/*** 刪除普通Activity* * @param activity*/public static void removeActivity(Activity activity) {activities.remove(activity);LogUtils.debug("ActivityManager--exit", activity.getClass().getSimpleName());}/*** 結束普通Activity的棧頂的元素* */public static void getTopActivityAndFinish() {Activity top = activities.get(activities.size() - 1);removeActivity(top);top.finish();}public static boolean isActivityTop(String name){Activity top = activities.get(activities.size() - 1);return top.getClass().getSimpleName().equals(name);}/*** 結束當前之外的Activity*/public static void finishNotTopActivity(Activity top) {Iterator<Activity> iterator = activities.iterator();while (iterator.hasNext()) {Activity activity = iterator.next();if (top != activity) {iterator.remove();activity.finish();}}}/*** 結束所有activity*/public static void finishAllActivity() {Iterator<Activity> iterator = activities.iterator();while (iterator.hasNext()) {Activity activity = iterator.next();iterator.remove();activity.finish();}}public static void backToActivity(String toActivity) {List<Activity> needRemove = new ArrayList<Activity>();for (int i = activities.size() - 1; i < activities.size(); i--) {if (i >= 0) {Activity activity = activities.get(i);if (toActivity.equals(activity.getClass().getSimpleName())) {break;}needRemove.add(activity);// removeActivity(activity);// activity.finish();}}activities.removeAll(needRemove);// finish后對象銷毀,確保上一步準確執行還是提出來做for (Activity activity : needRemove) {activity.finish();}} }

在BaseActivity中添加

public class BaseActivity extends AnActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityManager.addActivity(this);.....} } @Overrideprotected void onDestroy() {....ActivityManager.removeActivity(this);super.onDestroy();}

在點擊退出程序的時候,執行

ActivityManager.finishAllActivity();

其他的關閉Activity方法網上相關的說明

  • finish():結束當前Activity,不會立即釋放內存。遵循android內存管理機制。
  • exit():結束當前組件如Activity,并立即釋放當前Activity所占資源。
  • killProcess():結束當前組件如Activity,并立即釋放當前Activity所占資源。
  • restartPackage():結束整個App,包括service等其它Activity組件。

特別注意:
除了finish()方法可以調用Activity的生命周期方法如onStop()、onDestroy(),其余三種退出App均不會調用Activity的生命周期方法。除非,在調用這幾個方法之前或者之后主動調用Activity的生命周期方法。如:
System.exit(int);
onDestroy();

總結

以上是生活随笔為你收集整理的Android 退出应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。