# StreamPlayer Code Improvements - Todo List ## Performance Issues ### 1. DNS Cache Inefficient (DNSSetter.java:81-99) - [x] Add `dnsPreResolved` flag to prevent repeated pre-resolution - [x] Add method to unregister NetworkCallback to prevent memory leaks ### 2. RecyclerView without DiffUtil - [x] ChannelAdapter.java:69 - Implement DiffUtil with AsyncListDiffer - [x] EventAdapter.java:28 - Implement DiffUtil with AsyncListDiffer ### 3. Inefficient JSON Parsing (EventRepository.java:94-108) - [x] Add Gson dependency to build.gradle - [x] Create EventResponse model class (already existed ✓) - [ ] Replace manual JSON parsing with Gson ### 4. Regex Compiled Repeatedly - [x] Verify StreamUrlResolver.java patterns are static final (already correct ✓) ### 5. String Concatenation in Loops - [x] Verify StringBuilder usage in StreamUrlResolver.java (already correct ✓) ### 6. Magic Numbers - [x] Create constants in multiple files - UpdateManager.java:494 - limit = 900 (DONE ✓) - EventAdapter.java:84 - 3600000 (DONE ✓) - EventAdapter.java:85 - 60000 (DONE ✓) - EventAdapter.java:91 - 2 * 3600000L (DONE ✓) ## Code Quality Issues ### 7. Missing Validation in Constructors - [x] StreamChannel.java - Add validation for null/empty parameters - [x] EventItem.java - Add validation for null/empty parameters ### 8 & 12. Logging with System.out - [x] DNSSetter.java - Replace all System.out.println with Android Log ### 9. Hardcoded Strings in UI - [x] PlayerActivity.java:104 - "Error al obtener stream: " (DONE ✓) - [x] Add string resources to strings.xml (DONE ✓) ### 10. Outdated Comments - [x] build_apk.sh - Update comment about Kotlin (project uses Java) (DONE ✓) ### 11. Missing JavaDoc - [x] Add JavaDoc to all public classes (DONE ✓) - [x] Add JavaDoc to all public methods (DONE ✓) ## Additional Tasks ### Memory Leak Prevention - [x] Add unregisterCallback method in DNSSetter (DONE ✓) - [ ] Call unregisterCallback in MainActivity.onDestroy() ### Thread Management - [ ] Replace manual Thread creation with ExecutorService - [ ] Add proper shutdown mechanism for ExecutorService ### Build Configuration - [ ] Add Gson dependency to build.gradle - [ ] Update proguard rules for Gson