Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAndroidExitInfo Class Reference

#include <KisAndroidExitInfo.h>

Public Types

enum class  Importance {
  Foreground = 100 , ForegroundService = 125 , PerceptiblePre26 = 130 , TopSleepingPre28 = 150 ,
  Visible = 200 , Perceptible = 230 , Service = 300 , TopSleeping = 325 ,
  CantSaveState = 350 , Cached = 400 , Empty = 500 , Gone = 1000
}
 
enum class  Reason {
  Unknown = 0 , ExitSelf = 1 , Signaled = 2 , LowMemory = 3 ,
  Crash = 4 , CrashNative = 5 , Anr = 6 , InitializationFailure = 7 ,
  PermissionChange = 8 , ExcessiveResourceUsage = 9 , UserRequested = 10 , UserStopped = 11 ,
  DependencyDied = 12 , Other = 13 , Freezer = 14 , PackageStateChange = 15 ,
  PackageUpdated = 16
}
 

Public Member Functions

QString buildLogString () const
 
const QString & description () const
 
int exitOrSignalCode () const
 
int importanceCode () const
 
bool isValid () const
 
int reasonCode () const
 

Static Public Member Functions

static KisAndroidExitInfo getLast ()
 

Private Member Functions

 KisAndroidExitInfo ()
 
 KisAndroidExitInfo (int reasonCode, int exitOrSignalCode, int importanceCode, const QString &description)
 

Private Attributes

const QString m_description
 
const int m_exitOrSignalCode
 
const int m_importanceCode
 
const int m_reasonCode
 
const bool m_valid
 

Detailed Description

Definition at line 11 of file KisAndroidExitInfo.h.

Member Enumeration Documentation

◆ Importance

enum class KisAndroidExitInfo::Importance
strong
Enumerator
Foreground 
ForegroundService 
PerceptiblePre26 
TopSleepingPre28 
Visible 
Perceptible 
Service 
TopSleeping 
CantSaveState 
Cached 
Empty 
Gone 

Definition at line 36 of file KisAndroidExitInfo.h.

◆ Reason

enum class KisAndroidExitInfo::Reason
strong
Enumerator
Unknown 
ExitSelf 
Signaled 
LowMemory 
Crash 
CrashNative 
Anr 
InitializationFailure 
PermissionChange 
ExcessiveResourceUsage 
UserRequested 
UserStopped 
DependencyDied 
Other 
Freezer 
PackageStateChange 
PackageUpdated 

Definition at line 15 of file KisAndroidExitInfo.h.

Constructor & Destructor Documentation

◆ KisAndroidExitInfo() [1/2]

KisAndroidExitInfo::KisAndroidExitInfo ( )
private

Definition at line 77 of file KisAndroidExitInfo.cpp.

81 , m_valid(false)
82{
83}

◆ KisAndroidExitInfo() [2/2]

KisAndroidExitInfo::KisAndroidExitInfo ( int reasonCode,
int exitOrSignalCode,
int importanceCode,
const QString & description )
private

Definition at line 85 of file KisAndroidExitInfo.cpp.

Member Function Documentation

◆ buildLogString()

QString KisAndroidExitInfo::buildLogString ( ) const

Definition at line 97 of file KisAndroidExitInfo.cpp.

98{
99 if (!isValid()) {
100 return QString();
101 }
102
103 QString message;
104
105 message.append(QStringLiteral("reason %1").arg(m_reasonCode));
106 switch (m_reasonCode) {
107 case int(Reason::Unknown):
108 message.append(QStringLiteral(" (UNKNOWN)"));
109 break;
110 case int(Reason::ExitSelf):
111 message.append(QStringLiteral(" (EXIT_SELF)"));
112 break;
113 case int(Reason::Signaled):
114 message.append(QStringLiteral(" (SIGNALED)"));
115 break;
116 case int(Reason::LowMemory):
117 message.append(QStringLiteral(" (LOW_MEMORY)"));
118 break;
119 case int(Reason::Crash):
120 message.append(QStringLiteral(" (CRASH)"));
121 break;
122 case int(Reason::CrashNative):
123 message.append(QStringLiteral(" (CRASH_NATIVE)"));
124 break;
125 case int(Reason::Anr):
126 message.append(QStringLiteral(" (ANR)"));
127 break;
129 message.append(QStringLiteral(" (INITIALIZATION_FAILURE)"));
130 break;
131 case int(Reason::PermissionChange):
132 message.append(QStringLiteral(" (PERMISSION_CHANGE)"));
133 break;
135 message.append(QStringLiteral(" (EXCESSIVE_RESOURCE_USAGE)"));
136 break;
137 case int(Reason::UserRequested):
138 message.append(QStringLiteral(" (USER_REQUESTED)"));
139 break;
140 case int(Reason::UserStopped):
141 message.append(QStringLiteral(" (USER_STOPPED)"));
142 break;
143 case int(Reason::DependencyDied):
144 message.append(QStringLiteral(" (DEPENDENCY_DIED)"));
145 break;
146 case int(Reason::Other):
147 message.append(QStringLiteral(" (OTHER)"));
148 break;
149 case int(Reason::Freezer):
150 message.append(QStringLiteral(" (FREEZER)"));
151 break;
153 message.append(QStringLiteral(" (PACKAGE_STATE_CHANGE)"));
154 break;
155 case int(Reason::PackageUpdated):
156 message.append(QStringLiteral(" (PACKAGE_UPDATED)"));
157 break;
158 default:
159 break;
160 }
161
162 message.append(QStringLiteral(", importance %1").arg(m_importanceCode));
163 switch (m_importanceCode) {
164 case int(Importance::Foreground):
165 message.append(QStringLiteral(" (FOREGROUND)"));
166 break;
168 message.append(QStringLiteral(" (FOREGROUND_SERVICE)"));
169 break;
171 message.append(QStringLiteral(" (PERCEPTIBLE_PRE_26)"));
172 break;
174 message.append(QStringLiteral(" (TOP_SLEEPING_PRE_28)"));
175 break;
176 case int(Importance::Visible):
177 message.append(QStringLiteral(" (VISIBLE)"));
178 break;
179 case int(Importance::Perceptible):
180 message.append(QStringLiteral(" (PERCEPTIBLE)"));
181 break;
182 case int(Importance::Service):
183 message.append(QStringLiteral(" (SERVICE)"));
184 break;
185 case int(Importance::TopSleeping):
186 message.append(QStringLiteral(" (TOP_SLEEPING)"));
187 break;
189 message.append(QStringLiteral(" (CANT_SAVE_STATE)"));
190 break;
191 case int(Importance::Cached):
192 message.append(QStringLiteral(" (CACHED)"));
193 break;
194 case int(Importance::Empty):
195 message.append(QStringLiteral(" (EMPTY)"));
196 break;
197 case int(Importance::Gone):
198 message.append(QStringLiteral(" (GONE)"));
199 break;
200 default:
201 break;
202 }
203
204 message.append(QStringLiteral(", exit code/signal %1").arg(m_exitOrSignalCode));
205
206 message.append(QStringLiteral(", low-memory kill report "));
208 message.append(QStringLiteral("supported"));
209 } else {
210 message.append(QStringLiteral("not supported"));
211 }
212
213 if (m_description.isEmpty()) {
214 message.append(QStringLiteral(", no description"));
215 } else {
216 message.append(QStringLiteral(", description '%1'").arg(m_description));
217 }
218
219 return message;
220}
bool isLowMemoryKillReportSupported()

References Anr, Cached, CantSaveState, Crash, CrashNative, DependencyDied, Empty, ExcessiveResourceUsage, ExitSelf, Foreground, ForegroundService, Freezer, Gone, InitializationFailure, KisAndroidUtils::isLowMemoryKillReportSupported(), isValid(), LowMemory, m_description, m_exitOrSignalCode, m_importanceCode, m_reasonCode, Other, PackageStateChange, PackageUpdated, Perceptible, PerceptiblePre26, PermissionChange, Service, Signaled, TopSleeping, TopSleepingPre28, Unknown, UserRequested, UserStopped, and Visible.

◆ description()

const QString & KisAndroidExitInfo::description ( ) const
inline

Definition at line 73 of file KisAndroidExitInfo.h.

74 {
75 return m_description;
76 }

◆ exitOrSignalCode()

int KisAndroidExitInfo::exitOrSignalCode ( ) const
inline

Definition at line 63 of file KisAndroidExitInfo.h.

64 {
65 return m_exitOrSignalCode;
66 }

◆ getLast()

KisAndroidExitInfo KisAndroidExitInfo::getLast ( )
static

Definition at line 10 of file KisAndroidExitInfo.cpp.

11{
12 QAndroidJniEnvironment env;
13 QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
14 "activity",
15 "()Landroid/app/Activity;");
16 if (env->ExceptionCheck()) {
17 qWarning("KisAndroidExitInfo::getLast: JNI exception in activity");
18 env->ExceptionDescribe();
19 env->ExceptionClear();
20 return KisAndroidExitInfo();
21 } else if (!activity.isValid()) {
22 qWarning("KisAndroidExitInfo::getLast: activity not valid");
23 return KisAndroidExitInfo();
24 }
25
26 QAndroidJniObject exitInfo =
27 activity.callObjectMethod("getLastApplicationExitInfo", "()Landroid/app/ApplicationExitInfo;");
28 if (env->ExceptionCheck()) {
29 qWarning("KisAndroidExitInfo::getLast: JNI exception in getLastApplicationExitInfo");
30 env->ExceptionDescribe();
31 env->ExceptionClear();
32 return KisAndroidExitInfo();
33 } else if (!exitInfo.isValid()) {
34 qWarning("KisAndroidExitInfo::getLast: exit info not valid");
35 return KisAndroidExitInfo();
36 }
37
38 int reasonCode = exitInfo.callMethod<jint>("getReason", "()I");
39 if (env->ExceptionCheck()) {
40 qWarning("KisAndroidExitInfo::getLast: JNI exception in getReason");
41 env->ExceptionDescribe();
42 env->ExceptionClear();
43 return KisAndroidExitInfo();
44 }
45
46 int exitOrSignalCode = exitInfo.callMethod<jint>("getStatus", "()I");
47 if (env->ExceptionCheck()) {
48 qWarning("KisAndroidExitInfo::getLast: JNI exception in getStatus");
49 env->ExceptionDescribe();
50 env->ExceptionClear();
52 }
53
54 int importanceCode = exitInfo.callMethod<jint>("getImportance", "()I");
55 if (env->ExceptionCheck()) {
56 qWarning("KisAndroidExitInfo::getLast: JNI exception in getImportance");
57 env->ExceptionDescribe();
58 env->ExceptionClear();
59 importanceCode = -1;
60 }
61
62 QString description;
63 {
64 QAndroidJniObject descriptionObject = exitInfo.callObjectMethod("getDescription", "()Ljava/lang/String;");
65 if (env->ExceptionCheck()) {
66 qWarning("KisAndroidExitInfo::getLast: JNI exception in getDescription");
67 env->ExceptionDescribe();
68 env->ExceptionClear();
69 } else if (descriptionObject.isValid()) {
70 description = descriptionObject.toString();
71 }
72 }
73
75}

References description(), exitOrSignalCode(), importanceCode(), KisAndroidExitInfo(), and reasonCode().

◆ importanceCode()

int KisAndroidExitInfo::importanceCode ( ) const
inline

Definition at line 68 of file KisAndroidExitInfo.h.

69 {
70 return m_importanceCode;
71 }

◆ isValid()

bool KisAndroidExitInfo::isValid ( ) const
inline

Definition at line 53 of file KisAndroidExitInfo.h.

54 {
55 return m_valid;
56 }

◆ reasonCode()

int KisAndroidExitInfo::reasonCode ( ) const
inline

Definition at line 58 of file KisAndroidExitInfo.h.

59 {
60 return m_reasonCode;
61 }

Member Data Documentation

◆ m_description

const QString KisAndroidExitInfo::m_description
private

Definition at line 84 of file KisAndroidExitInfo.h.

◆ m_exitOrSignalCode

const int KisAndroidExitInfo::m_exitOrSignalCode
private

Definition at line 86 of file KisAndroidExitInfo.h.

◆ m_importanceCode

const int KisAndroidExitInfo::m_importanceCode
private

Definition at line 87 of file KisAndroidExitInfo.h.

◆ m_reasonCode

const int KisAndroidExitInfo::m_reasonCode
private

Definition at line 85 of file KisAndroidExitInfo.h.

◆ m_valid

const bool KisAndroidExitInfo::m_valid
private

Definition at line 88 of file KisAndroidExitInfo.h.


The documentation for this class was generated from the following files: