أووبس ... لقد أخطأت في الصفحة
  • العودة الى الصفحة الرئيسية
  • 5 مكتبات رئيسية عليك تعلمها و إستخدامها في مشروعك الأندرويد

    في السنوات الأخيرة شهد نظام الأندرويد نموا كبيرا، إذ أصبح يغطي مجمل الأجهزة الإلكترونية الذكية. كما أن هذا التطور كان له تبعات على مستوى تطوير النظام حيث نشهد كل سنة إصدار جديد من نظام الأندرويد.
    و إذا كنت من مطوري تطبيقات الأندرويد ستلاحظ انه هناك تعقيدات كثيرة في التطوير و تحتاج لجهد كبير من أجل إتمامها بالشكل المطلوب،  من هنا ظهر مبدأ المكتبات التي تساعدنا على تجنب إعادة كتابة أكواد كبيرة و معقدة و قد تأخذ منا أياما كثيرة.

    إذن صديقي في هذا المقال سوف أقدم لك 5 مكتبات يجب عليك العمل بها دائما في بدايتك لأي مشروع على نظام الاندرويد ستحتاجها لتطوير التطبيق الخاص بك و ستوفر عليك الكثير من المهام ايضا .



    1- مكتبة GSON:

    هي مكتبة بلغة الجافا تساعدنا على عمل serializing و deserializing للكائنات (Object) من و إلى (JSON) . هذه المهمة تحتاجها دائما عند إتصالك ب API . (من الأفضل دائما إستخدام JSON لانه أسهل و أخف من XML)

    مثال :

    12345// Serialize 
    String userJSON = new Gson().toJson(user);
    
    // Deserialize
    User user = new Gson().fromJson(userJSON, User.class);

    2 - مكتبة RETROFIT

    من وقعها نجد المطورين يقولون : "Retrofit turns your REST API into a Java interface. ” إنها حل أنيق لتنظيم إتصالاتك بالأنترنت و الوصول لنقاط API الخاصة بك . يكفي إنشاء ل Interface و إذراج مكونات API كرابط الإتصال و طريقة الوصول و المعطيات الراد إرسالها . المكتبة تستخدم نظام annotation الشيء الذي يجعل الكود الخاص بك أنيق و مرتب

    مثال :
    12345678910111213141516171819202122232425262728public interface RetrofitInterface {
    
        // asynchronously with a callback
        @GET("/api/user")
        User getUser(@Query("user_id") int userId, Callback<User> callback);
    
        // synchronously
        @POST("/api/user/register")
        User registerUser(@Body User user);
    }
    
    
    // example
    RetrofitInterface retrofitInterface = new RestAdapter.Builder()
                .setEndpoint(API.API_URL).build().create(RetrofitInterface.class);
    
    // fetch user with id 2048
    retrofitInterface.getUser(2048, new Callback<User>() {
        @Override
        public void success(User user, Response response) {
    
        }
    
        @Override
        public void failure(RetrofitError retrofitError) {
    
        }
    });




    3 - مكتبة EVENTBUS

    هي مكتبة تسهل الإتصال بين مختلف مكونات تطبيقك. مثلا عندما نريد إرسال شيئ من Activity إلى سيرفيس يشتغل حاليا بالطريقة التقليدية قد تكون المهمة صعبة نوعا ما . او عتدما تريد الإتصال بين fragments .
    هذا مثال لإستخدام المكتبة عند الإتصال بالأنترنت او فقدان الإتصال :

    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354public class NetworkStateReceiver extends BroadcastReceiver {
    
        // post event if there is no Internet connection
        public void onReceive(Context context, Intent intent) {
            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) {
                    // there is Internet connection
                } else if(intent
                    .getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {
                    // no Internet connection, send network state changed
                    EventBus.getDefault().post(new NetworkStateChanged(false));
                }
    }
    
    // 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); // register EventBus
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            EventBus.getDefault().unregister(this); // unregister EventBus
        }
    
        // method that will be called when someone posts an event NetworkStateChanged
        public void onEventMainThread(NetworkStateChanged event) {
            if (!event.isInternetConnected()) {
                Toast.makeText(this, "No Internet connection!", Toast.LENGTH_SHORT).show();
            }
        }
    
    }



    4 - مكتبة ACTIVEANDROID

    هي مكتبة ORM للأندرويد (Object-relational mapping) و هي تجريد و تطوير عن SqLite التي تمكنك من الإتصال بقاعدة بيانات محلية على الجهاز و بدون كتابة أي صيغة SQL .
    بحيث اي كائن يرث من ActiveAndroid يمكن حفظه بالشكل التالي :
    1user.save();

    الشيء الذي يساعد على تفادي كتابة كود SQL طويل مثل :

    1INSERT INTO Users (Nickname, Name, Address, City, PostalCode, Country) VALUES ('Batman','Bruce W','Palisades 21','Gotham','40000','USA');

    مثال لإستخراج كل المستخدمين من قاعدة البيانات :

    1List<User> users = new Select().from(User.class).execute();

    بإستخدام SQL يكون بالشكل التقليدي التالي :

    1SELECT Nickname, Name, Address, City, PostalCode, Country FROM Users;

    ActiveAndroid هي مكتبة رائعة لإزالة إستعلامات SQL المعقدة من التطبيق و التواصل بشكل رائع و سلس مع قاعدة البيانات بشكل مباشر وبدون تعقيد . يوجد ايضا مكتبات أخرى من هظا النوع مثل GreenDAO و ORMLite 


    5 - مكتبة UNIVERSAL IMAGE LOADER

    هي مكتبة نمكن من تحميل و تخزين الصور بشكل غير متزامن حيث تقوم بالعمل في خلفية التطبيق و بدون تشويشات الشي الدي كنا نقوم به بإستخدام thread و AsyncTask .

    مثال :
    1imageLoader.displayImage(imageUri, imageView);

    ما رأيك في المكتبات التالية؟ و هل لديك أي مكتبات اخرى تستخدمها انت شخصيا ؟ شاركها معنا في تعليق .




    كاتب المقال

    المحرر: MrCharif

    مدير في موقع أكوا ويب، ملم بكل عوالم التقنية و تخصصاتها، مكتسب لخبرات بسيطة و أسعى لمشاركتها مع الجميع ، و يشاركوني كذلك خبراتهم، هدفنا الأول و الأخير في أكوا ويب إرضاء الكل و توفير منصة يستطيع أي رائد لعالم الويب فهمها و التعامل معها

    تبرع لصاحب المقال:

    هناك تعليقان (2):