public final class AppManager
extends java.lang.Object
Activity, 和在前台的 Activity| Modifier and Type | Class and Description |
|---|---|
static interface |
AppManager.HandleListener
Deprecated.
|
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
IS_NOT_ADD_ACTIVITY_LIST
true 为不需要加入到 Activity 容器进行统一管理,默认为 false
|
protected java.lang.String |
TAG |
| Modifier and Type | Method and Description |
|---|---|
boolean |
activityClassIsLive(java.lang.Class<?> activityClass)
指定的
Activity class 是否存活(同一个 Activity class 可能有多个实例) |
boolean |
activityInstanceIsLive(android.app.Activity activity)
指定的
Activity 实例是否存活 |
void |
addActivity(android.app.Activity activity)
添加
Activity 到集合 |
void |
appExit()
退出应用程序
|
android.app.Activity |
findActivity(java.lang.Class<?> activityClass)
获取指定
Activity class 的实例,没有则返回 null(同一个 Activity class 有多个实例,则返回最早创建的实例) |
java.util.List<android.app.Activity> |
getActivityList()
返回一个存储所有未销毁的
Activity 的集合 |
static AppManager |
getAppManager() |
android.app.Activity |
getCurrentActivity()
获取在前台的
Activity (保证获取到的 Activity 正处于可见状态, 即未调用 Activity.onStop()), 获取的 Activity 存续时间
是在 Activity.onStop() 之前, 所以如果当此 Activity 调用 Activity.onStop() 方法之后, 没有其他的 Activity 回到前台(用户返回桌面或者打开了其他 App 会出现此状况)
这时调用 getCurrentActivity() 有可能返回 null, 所以请注意使用场景和 getTopActivity() 不一样 |
AppManager.HandleListener |
getHandleListener()
Deprecated.
|
android.app.Activity |
getTopActivity()
获取最近启动的一个
Activity, 此方法不保证获取到的 Activity 正处于前台可见状态
即使 App 进入后台或在这个 Activity 中打开一个之前已经存在的 Activity, 这时调用此方法
还是会返回这个最近启动的 Activity, 因此基本不会出现 null 的情况
比较适合大部分的使用场景, 如 startActivity |
AppManager |
init(android.app.Application application) |
void |
killActivity(java.lang.Class<?> activityClass)
关闭指定的
Activity class 的所有的实例 |
void |
killAll()
关闭所有
Activity |
void |
killAll(java.lang.Class<?>... excludeActivityClasses)
关闭所有
Activity,排除指定的 Activity |
void |
killAll(java.lang.String... excludeActivityName)
关闭所有
Activity,排除指定的 Activity |
void |
onReceive(android.os.Message message)
Deprecated.
|
static void |
post(android.os.Message msg)
Deprecated.
|
void |
release()
释放资源
|
void |
removeActivity(android.app.Activity activity)
删除集合里的指定的
Activity 实例 |
android.app.Activity |
removeActivity(int location)
删除集合里的指定位置的
Activity |
void |
setCurrentActivity(android.app.Activity currentActivity)
将在前台的
Activity 赋值给 currentActivity, 注意此方法是在 Activity.onResume() 方法执行时将栈顶的 Activity 赋值给 currentActivity
所以在栈顶的 Activity 执行 Activity.onCreate(android.os.Bundle) 方法时使用 getCurrentActivity() 获取的就不是当前栈顶的 Activity, 可能是上一个 Activity
如果在 App 启动第一个 Activity 执行 Activity.onCreate(android.os.Bundle) 方法时使用 getCurrentActivity() 则会出现返回为 null 的情况
想避免这种情况请使用 getTopActivity() |
void |
setHandleListener(AppManager.HandleListener handleListener)
Deprecated.
|
void |
showSnackbar(java.lang.String message,
boolean isLong)
让在前台的
Activity, 使用 Snackbar 显示文本内容 |
void |
startActivity(java.lang.Class activityClass)
让在栈顶的
Activity ,打开指定的 Activity |
void |
startActivity(android.content.Intent intent)
让在栈顶的
Activity ,打开指定的 Activity |
protected final java.lang.String TAG
public static final java.lang.String IS_NOT_ADD_ACTIVITY_LIST
public static AppManager getAppManager()
public AppManager init(android.app.Application application)
@Deprecated public void onReceive(android.os.Message message)
message - @Deprecated public AppManager.HandleListener getHandleListener()
@Deprecated public void setHandleListener(AppManager.HandleListener handleListener)
getAppManager() 直接访问 AppManager
提供给外部扩展 AppManager 的 onReceive(android.os.Message) 方法(远程遥控 AppManager 的功能)
建议在 ConfigModule.injectAppLifecycle(Context, List) 中
通过 AppLifecycles.onCreate(Application) 在 App 初始化时,使用此方法传入自定义的 AppManager.HandleListener
handleListener - @Deprecated public static void post(android.os.Message msg)
msg - Messagepublic void showSnackbar(java.lang.String message,
boolean isLong)
Activity, 使用 Snackbar 显示文本内容message - isLong - public void startActivity(android.content.Intent intent)
Activity ,打开指定的 Activityintent - public void startActivity(java.lang.Class activityClass)
Activity ,打开指定的 ActivityactivityClass - public void release()
public void setCurrentActivity(android.app.Activity currentActivity)
Activity 赋值给 currentActivity, 注意此方法是在 Activity.onResume() 方法执行时将栈顶的 Activity 赋值给 currentActivity
所以在栈顶的 Activity 执行 Activity.onCreate(android.os.Bundle) 方法时使用 getCurrentActivity() 获取的就不是当前栈顶的 Activity, 可能是上一个 Activity
如果在 App 启动第一个 Activity 执行 Activity.onCreate(android.os.Bundle) 方法时使用 getCurrentActivity() 则会出现返回为 null 的情况
想避免这种情况请使用 getTopActivity()currentActivity - public android.app.Activity getCurrentActivity()
Activity (保证获取到的 Activity 正处于可见状态, 即未调用 Activity.onStop()), 获取的 Activity 存续时间
是在 Activity.onStop() 之前, 所以如果当此 Activity 调用 Activity.onStop() 方法之后, 没有其他的 Activity 回到前台(用户返回桌面或者打开了其他 App 会出现此状况)
这时调用 getCurrentActivity() 有可能返回 null, 所以请注意使用场景和 getTopActivity() 不一样
Example usage:
使用场景比较适合, 只需要在可见状态的 Activity 上执行的操作
如当后台 Service 执行某个任务时, 需要让前台 Activity ,做出某种响应操作或其他操作,如弹出 Dialog, 这时在 Service 中就可以使用 getCurrentActivity()
如果返回为 null, 说明没有前台 Activity (用户返回桌面或者打开了其他 App 会出现此状况), 则不做任何操作, 不为 null, 则弹出 Dialog
public android.app.Activity getTopActivity()
Activity, 此方法不保证获取到的 Activity 正处于前台可见状态
即使 App 进入后台或在这个 Activity 中打开一个之前已经存在的 Activity, 这时调用此方法
还是会返回这个最近启动的 Activity, 因此基本不会出现 null 的情况
比较适合大部分的使用场景, 如 startActivity
Tips: mActivityList 容器中的顺序仅仅是 Activity 的创建顺序, 并不能保证和 Activity 任务栈顺序一致
public java.util.List<android.app.Activity> getActivityList()
Activity 的集合public void addActivity(android.app.Activity activity)
Activity 到集合public void removeActivity(android.app.Activity activity)
Activity 实例{@link - Activity}public android.app.Activity removeActivity(int location)
Activitylocation - public void killActivity(java.lang.Class<?> activityClass)
Activity class 的所有的实例activityClass - public boolean activityInstanceIsLive(android.app.Activity activity)
Activity 实例是否存活{@link - Activity}public boolean activityClassIsLive(java.lang.Class<?> activityClass)
Activity class 是否存活(同一个 Activity class 可能有多个实例)activityClass - public android.app.Activity findActivity(java.lang.Class<?> activityClass)
Activity class 的实例,没有则返回 null(同一个 Activity class 有多个实例,则返回最早创建的实例)activityClass - public void killAll()
Activitypublic void killAll(java.lang.Class<?>... excludeActivityClasses)
Activity,排除指定的 ActivityexcludeActivityClasses - activity classpublic void killAll(java.lang.String... excludeActivityName)
Activity,排除指定的 ActivityexcludeActivityName - Activity 的完整全路径public void appExit()
此方法经测试在某些机型上并不能完全杀死 App 进程, 几乎试过市面上大部分杀死进程的方式, 但都发现没卵用, 所以此
方法如果不能百分之百保证能杀死进程, 就不能贸然调用 release() 释放资源, 否则会造成其他问题, 如果您
有测试通过的并能适用于绝大多数机型的杀死进程的方式, 望告知