LeakScope: Android Lifecycle & Memory Leak Violations
About this report: This issue was automatically generated by LeakScope, a static analysis tool for Android lifecycle violations and memory leaks built on the Soot framework. This is part of an ongoing academic research study targeting ICSE 2027. No immediate action is required — we would greatly appreciate your feedback on whether these findings are accurate.
Summary
LeakScope detected 21 potential issue(s) across 1 detector type(s):
| Severity |
Count |
| 🔴 High |
0 |
| 🟡 Medium |
0 |
| 🟢 Low (improvement opportunity) |
21 |
| Detector |
Count |
Severity |
Description |
ViewBindingOpportunity |
21 |
🟢 Low |
Manual findViewById() calls — ViewBinding migration opportunity |
Detailed Findings
🟢 ViewBindingOpportunity
Manual findViewById() calls — ViewBinding migration opportunity
Finding #1 — SceneDetailActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.SceneDetailActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in askForSceneName
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in showAddSceneLoading
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #2 — WiFiConfigActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.WiFiConfigActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #3 — ScheduleDetailActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.ScheduleDetailActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in askForScheduleName
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in showAddScheduleLoading
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Co
… (truncated for brevity)
Finding #4 — ProvisionLanding
View Binding Migration Opportunity
Class: com.espressif.ui.activities.ProvisionLanding
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #5 — ProofOfPossessionActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.ProofOfPossessionActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #6 — FwUpdateActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.FwUpdateActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #7 — ThreadConfigActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.ThreadConfigActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in showError
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #8 — GroupDetailActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.GroupDetailActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in askForGroupName
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in showLoading
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
No
… (truncated for brevity)
Finding #9 — EspMainActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.EspMainActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in askForAutomationName
• findViewById in askForSceneName
• findViewById in askForScheduleName
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in updateUi
• findViewById in onCreate
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #10 — ScheduleActionsActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.ScheduleActionsActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #11 — GroupsActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.GroupsActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in init
• findViewById in init
• findViewById in init
• findViewById in init
• findViewById in init
• findViewById in init
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #12 — NodeDetailsActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.NodeDetailsActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #13 — BLEProvisionLanding
View Binding Migration Opportunity
Class: com.espressif.ui.activities.BLEProvisionLanding
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in askForPrefix
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #14 — AddDeviceActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.AddDeviceActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in openCamera
• findViewById in onRequestPermissionsResult
• findViewById in onRequestPermissionsResult
• findViewById in onRequestPermissionsResult
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #15 — CmdRespActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.CmdRespActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #16 — SceneActionsActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.SceneActionsActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #17 — ProvisionActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.ProvisionActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for
… (truncated for brevity)
Finding #18 — GroupNodeSelectionActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.GroupNodeSelectionActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in showLoading
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #19 — EventDeviceActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.EventDeviceActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #20 — GroupShareActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.GroupShareActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
Finding #21 — GroupInfoActivity
View Binding Migration Opportunity
Class: com.espressif.ui.activities.GroupInfoActivity
Type: Activity
Current Pattern: Manual view lookup
findViewById() Calls:
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in initViews
• findViewById in shareGroupRequest
• findViewById in shareGroupRequest
Benefits of View Binding:
- Eliminates boilerplate findViewById() calls
- Compile-time type safety for view references
- Reduced null pointer exceptions
- Cleaner, more maintainable code
Note: This is a code modernization suggestion, not a memory leak
How to respond to this issue:
- If a finding is a true positive: consider applying the recommended fix and closing this issue.
- If a finding is a false positive: please leave a comment explaining why — your feedback directly improves our research.
- If you have questions: reply here or open a discussion.
This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on esp-rainmaker-android.
LeakScope: Android Lifecycle & Memory Leak Violations
Summary
LeakScope detected 21 potential issue(s) across 1 detector type(s):
ViewBindingOpportunityDetailed Findings
🟢
ViewBindingOpportunityManual findViewById() calls — ViewBinding migration opportunity
Finding #1 —
SceneDetailActivityFinding #2 —
WiFiConfigActivityFinding #3 —
ScheduleDetailActivityFinding #4 —
ProvisionLandingFinding #5 —
ProofOfPossessionActivityFinding #6 —
FwUpdateActivityFinding #7 —
ThreadConfigActivityFinding #8 —
GroupDetailActivityFinding #9 —
EspMainActivityFinding #10 —
ScheduleActionsActivityFinding #11 —
GroupsActivityFinding #12 —
NodeDetailsActivityFinding #13 —
BLEProvisionLandingFinding #14 —
AddDeviceActivityFinding #15 —
CmdRespActivityFinding #16 —
SceneActionsActivityFinding #17 —
ProvisionActivityFinding #18 —
GroupNodeSelectionActivityFinding #19 —
EventDeviceActivityFinding #20 —
GroupShareActivityFinding #21 —
GroupInfoActivityHow to respond to this issue:
This report was generated by LeakScope as part of the ICSE 2027 research artifact. Tool analyzes compiled APKs using Soot static analysis on esp-rainmaker-android.