1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef OHOS_MEMORY_MEMMGR_APP_STATE_OBSERVER_H
17 #define OHOS_MEMORY_MEMMGR_APP_STATE_OBSERVER_H
18 
19 #include "application_state_observer_stub.h"
20 #include "reclaim_priority_manager.h"
21 
22 namespace OHOS {
23 namespace Memory {
24 class AppStateObserver : public AppExecFwk::ApplicationStateObserverStub {
25 public:
26     /**
27      * Application foreground state changed callback.
28      *
29      * @param appStateData Application Process data.
30      */
31     virtual void OnForegroundApplicationChanged(const AppExecFwk::AppStateData &appStateData) override;
32 
33     /**
34      * Will be called when the ability state changes.
35      *
36      * @param abilityStateData Ability state data.
37      */
38     virtual void OnAbilityStateChanged(const AppExecFwk::AbilityStateData &abilityStateData) override;
39 
40     /**
41      * Will be called when the extension state changes.
42      *
43      * @param abilityStateData Extension state data.
44      */
45     virtual void OnExtensionStateChanged(const AppExecFwk::AbilityStateData &abilityStateData) override;
46 
47     /**
48      * Will be called when the process start.
49      *
50      * @param processData Process data.
51      */
52     virtual void OnProcessCreated(const AppExecFwk::ProcessData &processData) override;
53 
54     /**
55      * Will be called when the process die.
56      *
57      * @param processData Process data.
58      */
59     virtual void OnProcessDied(const AppExecFwk::ProcessData &processData) override;
60 
61 private:
62     const std::map<int, AppStateUpdateReason> stateReasonMap_ = {
63         { static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_READY), AppStateUpdateReason::PROCESS_READY },
64         { static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_FOREGROUND), AppStateUpdateReason::FOREGROUND },
65         { static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_BACKGROUND), AppStateUpdateReason::BACKGROUND },
66     };
67 
68     const std::map<int, std::string> stateReasonStrMap_ = {
69         { static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_READY), "PROCESS_READY" },
70         { static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_FOREGROUND), "FOREGROUND" },
71         { static_cast<int32_t>(AppExecFwk::AbilityState::ABILITY_STATE_BACKGROUND), "BACKGROUND" },
72     };
73 };
74 } // namespace Memory
75 } // namespace OHOS
76 #endif // OHOS_MEMORY_MEMMGR_APP_STATE_OBSERVER_H
77