Skip to content

Commit 03b74e8

Browse files
committed
feat: add base activity architecture
- Create BaseActivity for common functionality - Implement lifecycle management - Add common UI helpers - Reduce code duplication across activities
1 parent ef7d326 commit 03b74e8

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
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

Comments
 (0)