1+ package com .example .partymaker .ui .base ;
2+
3+ import android .app .Activity ;
4+ import android .os .Bundle ;
5+ import android .util .Log ;
6+ import androidx .appcompat .app .AppCompatActivity ;
7+ import androidx .lifecycle .ViewModelStore ;
8+ import com .example .partymaker .utils .infrastructure .system .MemoryManager ;
9+
10+ /**
11+ * Base activity with memory management integration.
12+ * All major activities should extend this class for proper memory handling.
13+ */
14+ public abstract class BaseActivity extends AppCompatActivity {
15+ private static final String TAG = "BaseActivity" ;
16+ private String activityKey ;
17+
18+ @ Override
19+ protected void onCreate (Bundle savedInstanceState ) {
20+ super .onCreate (savedInstanceState );
21+ activityKey = getClass ().getSimpleName () + "_" + System .currentTimeMillis ();
22+ MemoryManager .getInstance ().registerObject (activityKey , this );
23+ MemoryManager .getInstance ().logMemoryStats ();
24+ }
25+
26+ @ Override
27+ protected void onStart () {
28+ super .onStart ();
29+ MemoryManager .getInstance ().clearUnusedResources ();
30+ }
31+
32+ @ Override
33+ public void onTrimMemory (int level ) {
34+ super .onTrimMemory (level );
35+ switch (level ) {
36+ case TRIM_MEMORY_RUNNING_MODERATE :
37+ case TRIM_MEMORY_RUNNING_LOW :
38+ MemoryManager .getInstance ().clearImageCache ();
39+ break ;
40+ case TRIM_MEMORY_RUNNING_CRITICAL :
41+ MemoryManager .getInstance ().emergencyCleanup ();
42+ break ;
43+ case android .content .ComponentCallbacks2 .TRIM_MEMORY_BACKGROUND :
44+ break ;
45+ case android .content .ComponentCallbacks2 .TRIM_MEMORY_COMPLETE :
46+ break ;
47+ case android .content .ComponentCallbacks2 .TRIM_MEMORY_MODERATE :
48+ break ;
49+ case android .content .ComponentCallbacks2 .TRIM_MEMORY_UI_HIDDEN :
50+ break ;
51+ }
52+ }
53+
54+ @ Override
55+ protected void onDestroy () {
56+ super .onDestroy ();
57+ MemoryManager .getInstance ().unregisterObject (activityKey );
58+
59+ // Clear ViewModels
60+ getViewModelStore ().clear ();
61+
62+ // Clear any remaining references
63+ clearActivityReferences ();
64+ }
65+
66+ /**
67+ * Override this method to clear activity-specific references
68+ * to prevent memory leaks
69+ */
70+ protected abstract void clearActivityReferences ();
71+ }
0 commit comments