Uniknięcie zmiennej globalnej

0

Witam,

Pracując z aplikacją Windows Phone naszła mnie potrzeba na umożliwienie pracy aplikacji w trybie offline, czyli bez internetu. Wiem, że <ort>najprostrzym</ort> sposobem byłoby sprawdzenie przy uruchamianiu aplikacji czy jest internet i przypisać wartość bool true/false do zmiennej globalnej. I później na każdej z podstron sprawdzać IFem tą zmienną i wykonywać odpowiedni kod (online lub offline). Jednak chciałbym uniknąć używania zmiennych globalnych w projekcie, gdyż wiem że nie jest to najlepsze rozwiązanie.

W jaki sposób mógłbym się uporać z tym problemem?

0

A czemu nie sprawdzać po prostu w miejscach, w których naprawdę potrzebujesz internetu czy jest dostępny?

0

Ponieważ połączenie z internetem jest wykorzystywane na każdej z podstron.

0

Zrób może całkiem osobną funkcję która się tym zajmuje i inicjalizuj ją wtedy kiedy jest potrzebna.

1

jak wykonasz operacje sieciową to w przypadku braku internetu dostaniesz odpowiedni wyjątek. Nic tylko go obsłużyć (albo i nie).

1

Jak aplikacja ma działa z założenia w trybie online i offline to nie widzę tutaj miejsca na rzucanie wyjątków z powodu bycia offline. Powinieneś za każdym razem sprawdzać czy masz dostęp do internetu prostą funkcją w stylu NetworkInterface.GetIsNetworkAvailable, jeśli jesteś online to wywołać serwis z którego pobierasz dane, jak jesteś offline to pobrać tylko te dane które zapisałeś lokalnie podczas kiedy aplikacja po raz ostatni była online.

Poza tym nie widzę tutaj miejsca w ogóle na zmienna statyczną dostępną globalnie, z prostego powodu, jak odpalę aplikację będąc offline i między czasie włączę na przykład wifi a aplikacja wciąż będzie uruchomiona w tle to jak chciałeś chciałeś zmienić zmienną z false na true, skoro na starcie dałeś już false, chciałeś osobnym wątkiem co chwilę sprawdzać czy już jest połączenie czy nie?

Nie pisałem nigdy aplikacji mobilnej więc to czysto teoretyczne gdybanie. ;)

0

jak odpalę aplikację będąc offline i między czasie włączę na przykład wifi a aplikacja wciąż będzie uruchomiona w tle to jak chciałeś chciałeś zmienić zmienną z false na true, skoro na starcie dałeś już false, chciałeś osobnym wątkiem co chwilę sprawdzać czy już jest połączenie czy nie?

Szczerze to nawet nie brałem tego pod uwagę, chciałem na starcie przypisać i tyle, potem już nie ingerować. Ale no racja, przecież w trakcie działania połączysz się z internetem i tryb się powinien zmienić czyli to odpada :D Proste a zarazem nie pomyślałem.

Powinieneś za każdym razem sprawdzać czy masz dostęp do internetu prostą funkcją w stylu NetworkInterface.GetIsNetworkAvailable

Wychodzi na to, że tak to będę robił właśnie :)

jak jesteś offline to pobrać tylko te dane które zapisałeś lokalnie podczas kiedy aplikacja po raz ostatni była online.

Dokładnie tak to widzę również. Zastanawiam się tylko czy zrzut tych danych będąc online do lokalnej bazy robić od razu przy uruchomieniu aplikacji? Bo w sumie w każdej chwili może zerwać połączenie i przejdzie wszystko w tryb offline. Chyba tak to zrobię. Ewentualnie przy wyłączaniu aplikacji gdy użytkownik ciągle jest online to robić kolejny zrzut :)

Nie pisałem nigdy aplikacji mobilnej więc to czysto teoretyczne gdybanie.

Ale wszystko co napisałeś jak najbardziej można zrealizować ;)

0
XardasLord napisał(a):

Zastanawiam się tylko czy zrzut tych danych będąc online do lokalnej bazy robić od razu przy uruchomieniu aplikacji?

Nie wiem co właściwie ta aplikacja ma robić ale możesz zrobić synchronizację danych już na starcie aplikacji lub w momencie kiedy jest online.

1 użytkowników online, w tym zalogowanych: 0, gości: 1