Linjiajia
2023-05-15 a0dc6be52293a64ebfe38b8c2391dc7d2ffe63ae
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package com.android.app_base.base;
 
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
 
import androidx.annotation.NonNull;
 
import com.android.app_base.manager.AppManager;
import com.blankj.utilcode.util.Utils;
 
/**
 *  Application基类
 */
public class BaseApplication extends Application {
    private static Application sInstance;
 
    @Override
    public void onCreate() {
        super.onCreate();
        setApplication(this);
        Utils.init(this);
    }
 
    /**
     * 当主工程没有继承BaseApplication时,可以使用setApplication方法初始化BaseApplication
     * @param application
     */
    public static synchronized void setApplication(@NonNull Application application) {
        sInstance = application;
        //注册监听每个activity的生命周期,便于堆栈式管理
        application.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
 
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                AppManager.getAppManager().addActivity(activity);
            }
 
            @Override
            public void onActivityStarted(Activity activity) {
            }
 
            @Override
            public void onActivityResumed(Activity activity) {
            }
 
            @Override
            public void onActivityPaused(Activity activity) {
            }
 
            @Override
            public void onActivityStopped(Activity activity) {
            }
 
            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            }
 
            @Override
            public void onActivityDestroyed(Activity activity) {
                AppManager.getAppManager().removeActivity(activity);
            }
        });
    }
 
    /**
     * 获得当前app运行的Application
     */
    public static Application getInstance() {
        if (sInstance == null) {
            throw new NullPointerException("please inherit BaseApplication or call setApplication.");
        }
        return sInstance;
    }
}