Android, problemy z onBackPressed()

Android, problemy z onBackPressed()
TH
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 6 lat
  • Postów:69
0

Witajcie,
mam sobie kilka aktywności w apce i chciałbym żeby po naciśnięciu przycisku wstecz na głównej aktywności następowało wyjście z aplikacji. Powiedzmy, ze hierarchia jest następująca: A -> B ->C. W metodzie onBackPressed w A mam dane finish(). Przy takiej konfiguracji zamyka aktywność A i pojawiają się tamte poprzednie. Przeczytałem w różnych miejscach o jakichś flagach itd. ale to niewiele dawało.
Z góry dzięki za pomoc.

edytowany 1x, ostatnio: thalion
GregoryI
  • Rejestracja:ponad 9 lat
  • Ostatnio:dzień
  • Postów:238
0

Nie ma sensu.
Nie chce mi się szukać, ale gdy przeskoczyłem z uczenia się, pisząc programy deskopowe, na androida to strasznie mnie denerwowało, że back/quit nie wywoływało całkowitego wyłączenia aplikacji. Jest masa tematów na stacku odradzających tego rodzaju prób i główną radą było co najwyżej zastopowanie wszelkiego rodzaju operacji działających w czasie rzeczywistym i nie wymagających aktywnej aplikacji (np. onPause i zastopowanie odbieranie danych z gps).

Konkluzja ze stacka to to, że twórcy androida celowo zostawili to w ten sposób, żeby system sam decydował czy potrzebuje więcej pamięci i w takim wypadku automatyczne zamykał którąś z aplikacji.

Oczywiście nie daję tutaj odpowiedzi "jak napisać wyłączenie", da się bo sam w którymś kodzie to testowałem, ale biorąc pod uwagę to co napisałem wyżej, dałem sobie z tym spokój.
Taka jest moja aktualna opinia, ale poczekam aż wypowiedzą się mędrcy Androida:).

edytowany 1x, ostatnio: GregoryI
TH
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 6 lat
  • Postów:69
0

To prawda. W wielu miejscach widziałem te wpisy, które odradzały. Ostatecznie zawsze można samemu zamknąć aplikację wchodząc do tego menu wyświetlającego aktywne apki i tam kliknąć krzyżyk. Jednak sam np używam u siebie na telefonie przegądarki Dolphin, którą bez problemu można zamknąć :) To samo jakieś Yanosiki czy inne cuda. Ile razy miałem tak, że wychodzę z samochodu, wydaje mi się, że wszystko zamknięte a ten mi jeszcze gada, ze mam skręcić w lewo. Dopiero jak się porządnie przyjrzałem, to znalazłem możliwość całkowitego wyłączenia.

Abstrahując od tych dywagacji znalazłem chyba coś na kształt rozwiązania. Są w sumie dwie opcje. Jeśli jestem w aktywności A mogę chcieć całkowicie zamknąć jakąś aplikację lub tylko ją schować, tak że będzie widoczna potem w tym menu z listą aktywnych aplikacji. Ta druga opcja nie działała do końca dobrze. Ostatecznie zagrała kombinacja metod

Kopiuj
 finishAffinity();
               
 finish();

Takie rozwiązanie całkowicie zamyka aplikacje - nie widać jej potem we wspomnianym menu - to już nieaktualne. Jednak się kiełbasi. Chyba poczekam aż ktoś mądrzejszy się wypowie :P

P.S Może działam tylko na starych telefonach ale nie mam dobrego doświadczenia z automatycznym zamykaniem programów przez Androida.

edytowany 3x, ostatnio: thalion
TH
Jednak się kiełbasi. Chyba poczekam aż ktoś mądrzejszy się wypowie :P
panryz
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 4 godziny
0

Faktycznie jest to problematyczne. Nie mniej jednak udało mi się osiągnąć coś takiego:

Mam MainActivity z którego startuję Main2Activity z którego znów startuję Main3Activity. Uruchamiam je za pomocą takiego Intenta:

Kopiuj

 Intent intent = new Intent(this, Main2Activity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
        startActivity(intent);

Będąc w Main3Activity naciskam back button i pokazuje mi się pierwsze activity, a to z racji tego że jest on ustawione jako LauncherActivity. Jeśli koniecznie chcesz, aby to pierwsze activity nie odkładało się na stos to po startActivity musisz wywołać finish().

edytowany 1x, ostatnio: panryz
TH
  • Rejestracja:prawie 9 lat
  • Ostatnio:prawie 6 lat
  • Postów:69
0

Czekaj... nie bardzo rozumiem. Może mam pewne mylne wyobrażenie o tym. Jest ta sytuacja: A->B->C. Chciałbym żeby przycisk wstecz dotknięty na A wyłączał aplikacje (pokazywał ekran startowy). Czy ta opcja jest zależna od tego w jaki sposób będe uruchamiał aktywności B i C z poziomu A? Myślałem, że to coś w stylu 'zamknij wszystko' i tyle. Coś mam chyba mętlik w głowie

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)