piątek, 30 marca 2018

Co to takiego jest to Affinity?

Koligacja (affinity) aktywności (activity) określa do jakiego zadania dana aktywność preferowanie należy.

Domyślnie jest taka sama dla wszystkich aktywności danej aplikacji i jej wartość określana jest przez nazwę paczki aplikacji. Dzięki temu wszystkie aktywności aplikacji są ze sobą powiązane i będą się otwierały w stosie (stack) tego samego zadania (task).

Koligację inną niż domyślna można ustawić zmieniając w manifeście wartość atrybutu taskAffinity dla wybranej aktywności. Wartość ta musi być inna niż nazwa paczki aplikacji (to jest domyślna wartość tego atrybutu).

Koligacja jest brana pod uwagę, gdy:
  • aktywność jest wywoływana z flagą FLAG_ACTIVITY_NEW_TASK - system sprawdza wtedy czy jest jakieś inne zadanie, którego aktywności mają tę samą koligację co wywoływana aktywność - jeśli tak, to aktywność jest do niego przypisywana, jeśli nie to wywoływana aktywność otwiera nowe zadanie
  • atrybut allowTaskReparenting dla danej aktywności ma wartość true - wtedy każde zadanie, z którym dana aktywność ma koligację, przechodząc do gółwnego wątku (foreground) przypisuje sobie na górę stosu i wyświetla tę aktywność
Koligacja przyda się również gdy paczka APK zawiera więcej niż jedną aplikację - wtedy można różne aplikacje odpowiednio ze sobą powiązać (jak mieć 2 aplikacje w jednym .apk - https://stackoverflow.com/questions/10682576/one-apk-file-that-installs-two-apps)

Brak komentarzy:

Prześlij komentarz