via Wykop Mobilny (Android)
  • 2
W jaki sposób omijać leaki w aplikacjach Android?
LeakCanary informuje mnie o tym że np. Mam leak w miejscu gdzie przerzucam Context(w np. AdapterRecyclerView adapter = new AdapterRecyclerView(Context context, ArrayList postLists);)
Więc w jaki sposób mogę uniknąć tych leaków w momencie kiedy po prostu muszę podać Context do np. MainActivity... Muszę w OnDestroy "usuwać" instancje? (np. adapter = null;albo postList = null;)

I tak jak potrafię pisać
Pobierz mamniciwszystko - W jaki sposób omijać leaki w aplikacjach Android?
LeakCanary inform...
źródło: comment_16653175633PB9rMNBYHwzXmqKICkDoC.jpg
#java #kotlin #androidstudio

Ostatnio zapytałem i dostałem odpowiedź. Napisałem sobie prostą funkcję która ma zadanie przechwycić nową wiadomość. Wygląda ona tak:

private fun receiveMessage(){
val receiver = object: BroadcastReceiver(){
override fun onReceive(p0: Context?, p1: Intent?) {
var messageText = "";
for(sms in Telephony.Sms.Intents.getMessagesFromIntent(p1)){
messageText += sms.displayMessageBody
}
}
}
registerReceiver(receiver, IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
}

Wszystko działa poprawnie, problem polega na tym, że potrzebuję informacji odnośnie numeru odbiory. Aplikacja będzie finalnie używana na telefonie dual
#java #programowanie #androidstudio #android

Wiem, że sobota ale może ktoś coś poradzi. Z pewnych powodów muszę minimalnie polubić się z Javą i Android Studio. Mam do zrobienia mega prostą apkę, która po wciśnięciu przycisku odczyta numer wpisany w pole tekstowe i na ten numer wyśle SMS. Ostatni kontakt z Javą miałem parę lat temu ale coś tam się udało z pomocą internetu ukleić. Kod samej wysyłki SMS wygląda tak:

button.setOnClickListener(new View.OnClickListener() {
@mikra25: jak masz możliwość to sprawdź:
- czy działa na wcześniejszych wersjach Androida
- czy apka powinna zarequestować o dynamiczny permission
- co ciekawego pisze w logcacie - czy są jakieś błędy
- czy sendTextMessage zwraca jakieś błędy / status
Jak nazywa się funkcja, która pozwala na taką sytuacje:
Otóż powiedzmy, że mamy np. Aplikacje Galaxy Wearable - działa ona tak, że podczas konfigurowania tej aplikacji tzn. Po połączeniu się z np. Zegarkiem, pobiera ona jakby „osobny moduł aplikacji” i mam tu na myśli sytuacje taką, że użytkownik zamiast dostawać pełną aplikację, dostaje tylko to co jest mu potrzebne (posiadając tylko zegarek samsunga nie potrzebuje on modułu od słuchawek Buds więc główna
Potrzebuję zmienić kod w SMALI tak, aby isSamsungDeviceWithCustomBinary zawsze zwracało false - co zrobić aby zamienić invoke-static {}, Lcom/samsung/android/app/twatchmanager/util/HostManagerUtils;->isSamsungDeviceWithCustomBinary()Z po prostu na coś w stylu p1 = false (o ile właśnie p1 to jest zmienna - bo nie wiem xd)

Cały kod:

:cond_74
invoke-static {}, Lcom/samsung/android/app/twatchmanager/util/HostManagerUtils;->isSamsungDeviceWithCustomBinary()Z

move-result p1

if-eqz p1, :cond_80

iget-object p1, p0, Lcom/samsung/android/app/watchmanager/setupwizard/SetupWizardWelcomeActivity;->activityHelper:Lcom/samsung/android/app/watchmanager/setupwizard/WelcomeActivityHelper;

invoke-virtual {p1, p0, p0}, Lcom/samsung/android/app/watchmanager/setupwizard/WelcomeActivityHelper;->showCustomBinaryDialog(Landroid/content/Context;Landroid/app/Activity;)V

return-void

#smali
#java
#androidstudio
Mam problem z modowaniem APK.
Zdekompilowałem APK korzystając z APK Easy Tool, potem znalazłem interesującą mnie klasę, którą chcę zmodyfikować - powiedzmy, że nazywa się myClass.smali - no więc konwertuję to z smali na java używając smali2java, modyfikuję i w APK Easy Tool pod zakładką Smali/baksmali konwertuję ten plik java do dex i z dex na smali ale jak już przekonwertuje to na smali to ten plik myClass.smali magicznie wraca do oryginalnej
jak tam usuwam metodę to APK nie chcę się skompilować


@mamniciwszystko: Nie znam się na Smali ani na APK ale jeśli usuniesz metodę a pozostawisz jej wywołanie, to raczej normalna sytuacja że kod przestanie się budować. Może wyrzucenie wywołania albo zahardkodowanie wyniku metody coś zmieni. Jeśli w kontekście problem na który trafiłeś bredzę - zignoruj tę "poradę" ( ͡° ͜ʖ ͡°)
Mam problem - nagle, z dnia na dzień przestał działać u mnie LogCat.
Problem wygląda tak, że dostaję normalnie błędy systemowe w zakładce LogCat w Andorid Studio dopóki nie kliknę "Debug" i aplikacja zainstaluje się na moim telefonie - jak już się zainstaluje to jedyne co dostaję w LogCat to E/SensorsHub: PocketModeLiteSensor :input data file descriptor not available - (Bad file descriptor) I NIC WIĘCEJ, dosłowanie nic więcej! Instalowałem już Android Studio
Yooo, Pobrałem kod źródłowy biblioteki z GitHub (tylko tak mogę ją dodać do projektu) i zaimportowałem go do projektu w Android Studio jako moduł - wszystko gites ale potrzebuje mieć w build.gradle te dwie biblioteki:
androidx.appcompat:appcompat:1.4.1
com.google.android.material:material:1.5.0

I gdy synchronizuje projekt wtedy dostaję błąd, że te dwie biblioteki nie mogą zostać "rozwiązane". Dodam, że w module ":app" te biblioteki normalnie istnieją ale nie mogę ich dodać do akurat tego modułu - jak
Ogólnie zacząłem trochę siedzieć na GitHub i robię "commity" na "swoje" repozytorium, które "sforkowałem" z konta jakiegoś typa - zrobiłem mu fixy i wysłałem "pull request" (kureła nie ogarniam jeszcze o co tam chodzi dlatego tak piszę xd). No i przyjął, wszystko fajnie - ale dziś znów zrobiłem kilka poprawek, wysłałem mu "pull request" i widzę, że wysłałem mu też te starsze commity (co wysłałem wczoraj) i pytanie jak się pozbyć tych
@mamniciwszystko: na szybko: upewnij się że wszystko masz sfetchowane i albo:

- odbij jeszcze raz brancha z aktualnego mastera/maina oryginalnego repo (prawdopodobnie będzie w GitHubie będzie to "upstream"), i dorzuć swoje commity wybierając wisienki (cherry-pick) i wystaw PR z nowego brancha

albo

- zakładając, że właściciel oryginalnego repo na pewno już zmergował twojego pierwszego PR, możesz spróbować czy da radę domergować zmiany ze zdalnego repo do aktualnego bracha bądź zrebasować aktualną
#anonimowemirkowyznania
Hej, planuje zrobić aplikacje wspomagającą opieke nad starsza osoba i mam tutaj kilka pytań - aplikacja bedzie sie skladala z kafelków "pomiar cisnienia, pomiar cukru" itp po nacisnięciu w kafelek przeniesie nas na nowy ekran gdzie bedziemy mogli podac np pomiar z data i tu pytanie czy dla kazdego kafelka używać nowej aktywności czy fragmentów? Za bardzo nie wiem jak dzialają te fragmenty. - Po dodaniu ImageButton mam czerwony błąd "