Android jeszcze raz :-)

Apr 21, 2011 27 Replies

Wiadomo, że telefony i tablety mają system plików w NAND flashu, a ja muszę pisać sobie do tymczasowego pliku miliony razy. Nie mam zielonego pojęcia co taki Android robi gdy widzi takie zapisy i jak planuje to keszować. Jest to też wolne. Plik mi nie jest do szczęścia potrzebny po wielomilionowym używaniu go. Może siedzieć w ramie więc wymyśliłem sobie, że zadeklaruję sobie



plik w pamieci :



MemoryFile mf = new MemoryFile("buf0", 2048);



I zadeklaryję filedescriptor, gdyż lest on niezbędny innej funkcji systemowej



FileDescriptor fd = new FileDescriptor();



Jak przybindować buf0 do fd żeby fd wskazywał na ta ten wirtualny plik?


W dniu 21.04.2011 22:18, Lelek@ pisze:

Jak rozumiem z jakiś przyczyn nie możesz pobrać deskryptora do MemoryFile przez metodę getFileDescriptor?

Nie umiem tego zapisać :-) Nie rozumiem tego :-)

Inna funkcja z API 4 chce filedeskryptora do pliku lub ścieżki na "/sdcard/lol.bib" Ponieważ jest to plik MemoryFile nie mam zielonego pojęcia jak sie do niego dobrać :-)

W dniu 21.04.2011 22:34, Lelek@ pisze:

MemoryFile mf = new MemoryFile("buf0", 2048); FileDescriptor fd = mf.getFileDescriptor(); Nie działa?

Jeszcze raz:

Jest sobie fakaś funkcja API nazwijmy ją setFoo("/scdard/lol.bin") I pięknie zapisuje do external memory. Ale robi to bardzo wolno i boję się że po milionach zapisów załatwię telefon.

Chcę te kilka plików zadeklarować w RAM-ie jako MemoryFile.

A temu tak chcę zrobić, bo inne funkcje chcą tworzyć pliki i nie potrafia pisać do buforów, tablic. Muszę te pliki buforowe zapisywać i czytać kilka razy na sekundę.

Nie działa - podkreśla mi na czerwono to getFileDescriptor(); // The method FileDescriptor() is undefined for the type MemoryFile

Podpowiada że mam rzutować (add cast to mf0) i robi to:

((FileDescriptor) mf0).FileDescriptor();

I dalej podkreśla już całość :-)

Te cztery linijki:

MemoryFile mf0 = new MemoryFile("buf0", 2048);

MemoryFile mf1 = new MemoryFile("buf1", 2048);

FileDescriptor fd0 = mf0.getFileDescriptor();

FileDescriptor fd1 = mf1.getFileDescriptor();

podkreślone na czerwono oba getFileDescriptor()

W dniu 21.04.2011 22:41, Lelek@ pisze:

Ki czort? Czemu nagle się zrobiło FileDescriptor()? Niestety na androidzie się specjalnie nie znam - chyba więcej pomóc nie mogę.

getFileDescriptor tam wyżej próbowałem czy może bez get :-)

formatting link
Nie ma tej funkcji w ogóle dla plików w Memory

Muszę mieć deskryptor do mf0 i mf1 bo nie mam co funkcji API wsadzić w mordę :-) A nie moge pisać do sdcard bo ją zabiję i za wolno.

SDCARD to jedno z niewielu miejsc gdzie mam uprawnienia. Te głupawe funkcje chcą działać na plikach, strumieniach i protokołach bez wnikania w szczegóły. Czujesz problem? Muszę mieć dwa bufory i posać do nich na zmianę żeby nie tracic danych, bo do bajtów tam nie ma dostepu.

Prawdopodobmie MemoryFile to coś innego niż File

I do MemoryFile powinien być MemoryFileDescriptor, którego nie ma. A my chcemy użyć FileDescriptor do Memory. Teraz trzeba jakoś naokoło przejść z MemoryFile do FileDescriptor ale funkcji bezpośrednio konwertujących nie ma.

W dniu 21.04.2011 23:04, Lelek@ pisze:

Wygląda na to, że masz bardzo starego androida:

formatting link

Ale nie moge pisać softu na system, którego nawet jeszcze nie ma w telefonach. 2.3 jest sporadycznie, a sprzedanych tabletów ze starszymi miliony

Ja to widziałem ale nie wiem co zrobić żeby to obejść. Musi to działać od Androida 1.6

Zanim napiszesz, to proporcje moga sie zmienic :-)

Tylko wy nadal nie czytacie dokumentacji

"getFileDescriptor ... Gets a FileDescriptor for the memory file. Note that this file descriptor is only safe to pass to #MemoryFile(FileDescriptor,int)). It should not be used with file descriptor operations that expect a file descriptor for a normal file. ..."

J.

Ale to nie zmienia faktu, ¿e poni¿ej 2.3 go nie ma :-( Trzeba jako¶ przej¶æ przez AssetFileDescriptor

i temu podobne. Nie wiem na razie do czego one s± :-)

Ja sie na Androidzie kompletnie nie znam, ale tu sie pojawia juz w

2008r. Chyba ze to propozycja na przyszlosc.
formatting link

Ja sie dalej nie znam - ale jesli to taki obiektowy system, to moze mozesz napisac wlasna klase z potrzebnymi metodami ?

J.

W dniu 2011-04-21 22:39, Lelek@ pisze:

Obawiam sie ze jesli piszesz do NAND'a to zalatwisz ja po kilku tysiacach zapisow. A android to przeciez LINUX

Użytkownik "Lelek@" snipped-for-privacy@iw.iw napisał w wiadomości news:ioq3ff$4sv$ snipped-for-privacy@opal.futuro.pl...

Czyli to ma byc taki tymczasowy plik do uzycia przez niektore funkcje/programy ? I one tam sobie cos zapisza, wkrotce potem odczytaja, a potem znow zapisza i na koncu to nikomu nie bedzie potrzebne ?

Ja sie tam na Androidzie nie znam - ale czy nie da rady skonfigurowac jakiegos malego ramdysku ?

J.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required