Hozirgi kunga kelib android dastrulashni Android Studio va Gradle larsiz tasavur qilish qiyin bo’lib qoldi. Bundan tashqari biz har doim foydalanadigan juda muhim bir necha ochiq kutubxonalar bor. Lekin biz kerakli kutubxona deb hisoblagan 5tasi bilan ishlash va ularni linklarni ko’rib chiqamiz.
GSON shunday java kutubxonasiki u bilan biz json formatini java obyektiga o’girishimiz(serializ) va qayta o’girishimiz(deserializ) mumkin.
Asosan API orqali kelgan ma’lumotlarni tahrirlashda ishlatishga juda qulay. JSONni ko’p ishlatilishiga sabab uni kam hajmligi va XML dan ko’ra ancha qulayligida.
- // Serialize
-
-
- // Deserialize
-
- User user = new Gson().fromJson(userJSON, User.class);
API bilan ishlaydigan projekt uchun eng oqilona tanlangan kutubxona hisoblanadi. API ga yuboriladigan so’rov metodi va URL lar anotatiya qilib yoziladi, bu yozilayotgan dasturni sodda va tushinarli bo’lishiga yordam beradi.
Anotatsiya orqali parametr, so’rov header larni qo’shib yozish imkoni ham mavjud.
API ga murojaat sinxron bajariladi yoki asinxron yuborish mumkin, yani so’rov yuborilgandan keyin natija muvaffaqiyatli(success) yoki xatolik(failure) bo’lib tarzda qaytadi.
- public interface RetrofitInterface {
-
- // asinxron callback natija qaytaradi
-
- @GET("/api/user")
-
- User getUser(@Query("user_id") int userId, Callback<User> callback);
-
- // sinxorn post qilish
-
- @POST("/api/user/register")
-
- User registerUser(@Body User user);}
-
- }
-
- // masalan
-
- RetrofitInterface retrofitInterface = new RestAdapter.Builder()
-
- .setEndpoint(API.API_URL).build().create(RetrofitInterface.class);
-
- // id si 2048 ga teng userni qaytaradi
-
- retrofitInterface.getUser(2048, new Callback<User>() {
-
- @Override
-
- public void success(User user, Response response) {
-
- }
-
- @Override
-
- public void failure(RetrofitError retrofitError) {
-
- }});
-
- User user = getUser();
-
- retrofitInterface.registerUser(user);
Retrofit Gson kutubxonasini default xolatda ishlatib jsonga o’girishi yoki qaytib java objectiga qaytaradi.
Eventbus kutubxonasi dasturni turli qismlarini bog’lanishlarni soddalashtiradi. Masalan, Serviceni ishga tushirish uchun Activity orqali nimadir yuborish yoki fragmentlarni bir-biriga o’zaro ta’sir o’tqazishi. Tushunarli bo’lishi uchun agar internet uzilib qolganda activityda chiqarishni misol tariqasida ko’ramiz:
- public class NetworkStateReceiver extends BroadcastReceiver {
-
- // internet yo’q bulganda post junatadigan evet
-
-
- super.onReceive(context, intent);
-
- if(intent.getExtras()!=null) {
-
- NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
-
- if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {
-
- // demak internet bor
-
- } else if(intent
-
-
- // demak internet yo’’q, internet holatini jo’natamiz
-
- EventBus.getDefault().post(new NetworkStateChanged(false));
-
- }}
-
- // Hodisa (event)
-
- public class NetworkStateChanged {
-
- private mIsInternetConnected;
-
- public NetworkStateChanged(boolean isInternetConnected) {
-
- this.mIsInternetConnected = isInternetConnected;
-
- }
-
- public boolean isInternetConnected() {
-
- return this.mIsInternetConnected;
-
- }}
-
- public class HomeActivity extends Activity {
-
- @Override
-
- protected void onCreate(Bundle savedInstanceState) {
-
- super.onCreate(savedInstanceState);
-
- setContentView(R.layout.activity_main);
-
- EventBus.getDefault().register(this); // EventBus ni registratisya qilish
-
- }
-
- @Override
-
- protected void onDestroy() {
-
- super.onDestroy();
-
- EventBus.getDefault().unregister(this); // EventBus ni registratsyadan o’chirish(bu app yopilganda eventbus ni ham eshitib turishini o’chiradi)
-
- }
-
- // qayerdandir NetworkStateChanged hodisasini post qilinganda ishga tushadigan metod
-
- public void onEventMainThread(NetworkStateChanged event) {
-
- if (!event.isInternetConnected()) {
-
- Toast.makeText(this, "No Internet connection!", Toast.LENGTH_SHORT).show();
-
- }
-
- }
-
- }
ActiveAndroid bu android uchun ORM hisoblanadi. Sqlite bilan ishlashini ancha soddalashtiradi yani siz sql so’rovlarsiz ham sqlite bilan ishlash imkoniyatini beradi. Activeandroid dan nasil(extends) olgan model object ma’lumotlar bazasiga shu ko’rinishda saqlaydi:
user.save();
Ya’ni siz uzundan-uzun sql so’rov yozishdan qutilasiz:
INSERT INTO Users (Ism, Familya, Address, Shahar, Davlat) VALUES (‘Toshmat‘,‘Eshmatov‘,‘Bodomzor 5‘,Toshkent‘,‘Uzbekistan‘);
Barcha userlarni bazadan olish uchun:
List<User> users = new Select().from(User.class).execute();
Ya’ni sqldagi ko’rinishi:
SELECT Ism, Familya, Address, Shahar, Davlat FROM Users;
UIL bu asinxron rasmlarni yuklash va keshlashni oson yechimi. Ishlatishga ham juda qulay hisoblanadi.
imageLoader.displayImage(imageUri, imageView);
Picasso ham ancha qulay hisoblanishiga qaramay, unda sozlashda kamchiliklar bor. UIL da sozlash qurilmasi mavjud, u har qanday rasmni yuklashini yoki keshlashni ayniqsa katta hajmdagi rasmlar bilan ishlay oladi(Picasso katta hajmdagi rasmlar yuklay olmaydi).
Yuqorida ko’rib chiqqan kutubxonalarimizni Android studio yuklash quyidagicha:
- dependencies {
-
- compile 'com.google.code.gson:gson:2.2.4'
-
- compile 'com.squareup.okhttp:okhttp:1.3.0'
-
- compile 'com.squareup.retrofit:retrofit:1.3.0'
-
- compile 'de.greenrobot:eventbus:2.2.+'
-
- compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.1'}
MANBA: https://infinum.co sayti
Rahmat juda foydali ma’lumotlar ekan
Savol usb fleshkani tel oqimayapti iltimos yordam bersez tel madeli honor 6a