Arka plan: Android M hafıza kartını nasıl ele alır?

Leila

Global Mod
Global Mod


  1. Arka plan: Android M hafıza kartını nasıl ele alır?

Google I/O’da önizlemesi yapılan Android M, bir SD kart bağlantısını geliştirir. Artık kartı özel olarak biçimlendirebilir ve ardından benzer şekilde dahili depolama birimine adresleyebilirsiniz. Orada uygulamaları da yükleyebilirsiniz.


Nexus 5’te test ettiğimizde, Google bizi şaşırttı: Bu yeni biçim, yalnızca SD kartlarla değil, USB ortamlarıyla da çalışır, aksi takdirde bu özelliği test edemezdik, çünkü Nexus 5, diğer tüm cihazlar gibi, Android M ön izlemesi zaten mevcut olan, SD yuvasına sahip değildir. Bu nedenle, USB desteğinin en son Android M’ye dahil edilip edilmeyeceği kesin değildir.

Bir USB cihazını taktıktan hemen sonra Android, biçimlendirilmesi gerekip gerekmediğini soracaktır. SD kart istemi açıldığında deneyemiyoruz, istediğiniz zaman Ayarlar/Depolama bölümünden manuel olarak açabilirsiniz. Basitlik için aşağıda sadece SD kartlar hakkında yazacağız ve her şeyin USB cihazları için de geçerli olmaya devam edeceğini umuyoruz.

Kullanıcının bakış açısından


Biçimlendirme, SD karttaki tüm verileri siler. Diğer cihazlarda okunamayacak şekilde şifrelenmiştir. Biçimlendirme tamamlandıktan sonra, Android size “Fotoğraflar, Dosyalar ve Uygulama Verileri”nin SD karta taşınmasını isteyip istemediğinizi soracaktır. Bu taşıma, daha sonra ayarlarda da gönderilebilir.

Bundan sonra, “genişletilmiş” bellekteki tüm veriler, yani DCIM, İndirilenler, Müzik, Zil Sesleri klasörlerinin yanı sıra birçok uygulama tarafından oluşturulan klasörler gibi SD kartta bulunur. Kesin olmak gerekirse: dosya altındaki her şey dosya yöneticileri Harici depolama-yol (esas olarak /Hafıza kartı, depolama/taklit/0 VEYA /mnt/sdkart) Dava açmak.

Kısa giriş: Şimdi kim yolda /Hafıza kartı harikalar: tarihsel nedenlerle, cihazın dahili belleğinin bir kısmı Android olarak konuşuyor /Hafıza kartı açık – genellikle 1 GB veya daha az belleğe sahip eski cihazlarda, aslında bir SD karttaydı. c’t 3/2015, s.150’de Android’in bozulan bellek yönetiminin bir açıklamasını getirdik.


USB aygıtlarını takarken, Android M ne yapması gerektiğini sorar: depolamayı daha önce olduğu gibi “taşınabilir depolama” olarak kullanın, böylece yalnızca birkaç Android uygulaması ona erişebilir. Veya yeni, dahili depolama (uygulanabilir depolama) olarak: Android daha sonra kartı biçimlendirir ve onu uygulamalar ve veriler için dahili depolama olarak kullanabilirsiniz. Nihayet. SD kartlar için de benzer olmalı ama bu talebin gelip gelmeyeceğini ve ne zaman geleceğini henüz bilmiyoruz.

Önceki Android 4.4 bellek kartlarından farklı olarak, tüm uygulamaların bu taşınan SD karta tam erişimi vardır. Buna karşılık, cihazın dahili belleği artık yalnızca sınırlı bir ölçüde kullanılabilir: uygulamalar oraya yüklenebilir ve özel verilerini orada kaydedebilir, başka bir şey değil. Verilerinizi dahili depolamaya geri taşıyabilirsiniz (örneğin, daha büyük bir SD kart takmak için), tabii ki yalnızca yeterli alanınız varsa.


Kullanıcı ayrıca, veriler taşınmış olsun ya da olmasın, uygulamaları herhangi bir zamanda dahili depolama ve SD kart arasında ayrı ayrı taşıyabilir. Öncekinden farklı olarak, Android, uygulamanın özel verilerini bile cihazın hafızasında daha fazla alan oluşturan hafıza kartına taşır. Önceden, bu veriler cihazın hafızasında kalıyordu (çünkü SD kart şifrelenmemişti) ve Android sadece APK dosyasını taşıyordu.

Ancak, tüm uygulamalar bunun için iyi olmamalıdır; Google henüz sınırlamalardan bahsetmedi, ancak Android 2 gibi olmalılar: widget’lı uygulamalar yok, başlangıçta başlatılması gereken uygulamalar yok, geliştiricileri SD’den yüklemeyi planlamayan uygulamalar yok. Önceden yüklenmiş uygulamalar da silinemez.

SD kartı çıkarırsanız, üzerinde depolanan uygulamalar uygulamaya genel bakıştan kaybolur ve ana ekrandaki tüm kısayollar devre dışı bırakılır. Dahili olarak yüklenen uygulamalar, bir sınırlamayla çalışmaya devam eder: Kullanıcı verilerini SD karta taşıdıysa, onları bekleyen uygulamalar verilerini bulamaz. Örneğin, Kindle uygulaması kitapları bulamıyor, kamera uygulaması fotoğraf çekmiyor. Kartı taktıktan sonra, tüm uygulamalar ve veriler tekrar kullanılabilir.

kullanıcı senaryoları


SD kartı Android cihazınız için bir depolama genişletme olarak kullanmak ve bu nedenle kartın cihazda kalıcı olarak kalmasını istiyorsanız, uygulamaları gerektiği gibi dahili veya harici olarak taşıyabilir ve depolayabilirsiniz.

Bununla birlikte, zaman zaman haritaları değiştirmeyi planlıyorsanız, taşıma işlemi yapmamalısınız, yalnızca oynadığınız ve kaydetmediğiniz oyunlar gibi hareket halindeyken her zaman ihtiyaç duymadığınız uygulamaları dış kaynak olarak kullanmalısınız. kaybetmek istemiyorum.

Kartı başka cihazlarda da kullanmak istiyorsanız, örneğin bir PC’ye veri yüklemek için, yeniden biçimlendirmekten kaçınmalı ve kartı eskisi gibi kullanmalısınız.

Bir programcının bakış açısından


Mevcut bilgi durumuna göre: Programcılar için yeni SD geçişi, bir yandan dikkate alınması gereken ek bir bellek yapılandırmasıdır. Öte yandan, oturum açmanın kendisi eski Android cihazlarda olduğu gibi çalıştığı için pek çok şey basitleştirilmiştir. Uygulamanız dosyanın ötesindeki depolama konumlarında bile yoksa Harici depolama-API ve benzeri, Android 3 bellek dönüşümlerinden gerçek bir SD kart kullanmadı, herhangi bir şey yapması gerekmiyor: kullanıcı SD kartını taşıdığı anda, eski uygulama otomatik olarak erişim kazanıyor.

Şifreli biçimlendirmede, SD karta özel bir kimlik atanır ve bu /depolama monte edilmiş, aşağıdaki örneğimiz /depolama/586675d6-6838-4bc0-abdf-df0fab107195/0. Environment.getExternalStorage() şimdi bu yolu döndürür. Rota şimdiye kadar geri döndü /depolama/taklit/0 taşınan cihazda artık mevcut değil. Bağlantı /Hafıza kartı her iki şekilde de kullanılabilir, her zaman doğru yere yönlendirilir. Daha önce çalışan takma ad /mnt/sdkart test cihazında çalışmadı, bunun nedeni gerçek bir SD kart değil, bir USB depolama cihazı olması da olabilir.

Artık bölünme Android 2 zamanındaki haline geri döndü: Der /veri-yol dahili bellekte, ExternalStorage bu SD kart. Aslında, taşınan kartlar için aygıtın dahili belleği artık değiştirilemez. /veri erişim, bu nedenle artık “paylaşılan” bellek olarak kullanılamaz.

Bu API, SD kartın takılı olup olmadığını bilmek için zaten bir sorgu sunuyor. Environment.getExternalStorageState(). Bunun bir SD kart mı yoksa cihazın dahili belleği mi olduğunu da belirleyebilirsiniz: Environment.isExternalStorageRemoveable(). Sonra teslim et Environment.isExternalStorageEmulated() GERÇEKtaşınan bir SD kart olmalı, YANLIŞ şifrelenmemiş bir “eski”yi gösterir.

fark etmek, farkına varmak


Ancak, yeni bellek bağlantısı sorunsuz çalışmıyor. Örneğin, geçişten sonra ekran görüntüsü alamadık, bunun için yeniden başlatmamız gerekti. Görünüşe göre bazı uygulamalar bunun yerine paylaşılan belleğe erişmek için sabit yollar kullanıyor ExternalStorage rica etmek.

Ve programcıların bunu hesaba katması gerekir: Mutlak yollardan kaçınmalısınız, ancak API çağrılarını kullanmalısınız:

  • Environment.getExternalStorageDirectory() paylaşılan hafıza için; cihaz hafızasına işaret eder (/depolama/taklit/0 mevcut cihazlarla) veya bunlara taşınan SD kartlarla (/depolamak//0).
  • Context.getFilesDir() ve özel uygulama depolaması için Google tarafından belirtilen diğer bağlamsal yöntemler; cihaz hafızasına işaret eder (aşağıda /veri) veya harita üzerinde taşınan uygulamalar (taşınmamış haritalarda bile) durumunda. Ayrı bir deneme uygulamasıyla birlikte gelir getFilesDir ancak SD karta geçtikten sonra bile hala /veri. Özel verilerin taşınmasının henüz Android önizlemesinde uygulanıp uygulanmadığını henüz öğrenemedik.
  • ContextCompat.getExternalFilesDir() Android 4.4 (altında) ile de erişilebilen SD kartlarda paylaşılan depolama için & Co. /Android/veri/ SD kartta). Aslında, bu API artık Android L altında gerekli değildir, ancak SD karta erişmek istiyorsanız yalnızca 3.0 ile 5.1 arasında gereklidir; yalnızca 4.4’ten beri, yalnızca dahili kartı değil, SD kartı da döndürür Harici depolama-Depolamak. (Dahili harici depolama terimi kafanızı karıştırıyorsa, Android’in gerçekten kafa karıştırıcı olan bellek teknolojisinin bir açıklamasını öneririz.)
Her uygulama çağrısında değişebilecekleri için bu rotaları da kaydetmemelisiniz. Bunun yerine, sadece arkasındaki kısmı kaydetmek ve bir API çağrısıyla birlikte gerçek yolu dinamik olarak birleştirmek daha iyidir.


(Sağ)



Haberin Sonu