কম্পিউটার

Android AsyncTasks সমান্তরাল এক্সিকিউশন


উদাহরণে যাওয়ার আগে, আমাদের জানা উচিত যে, asyncTask কী। AsyncTask ব্যাকগ্রাউন্ড থ্রেডে অপারেশন/অ্যাকশন করতে যাচ্ছে এবং মেইনথ্রেডে আপডেট করছে। এখানে Android AsyncTask প্যারালাল এক্সিকিউশন সম্পর্কে সহজ সমাধান।

ধাপ 1 − অ্যান্ড্রয়েড স্টুডিওতে একটি নতুন প্রকল্প তৈরি করুন, ফাইল ⇒ নতুন প্রকল্পে যান এবং একটি নতুন প্রকল্প তৈরি করতে সমস্ত প্রয়োজনীয় বিবরণ পূরণ করুন৷

ধাপ 2 − নিম্নলিখিত কোডটি res/layout/activity_main.xml-এ যোগ করুন .

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
   xmlns:tools = "https://schemas.android.com/tools"
   android:id = "@+id/rootview"
   android:layout_width = "match_parent"
   android:layout_height = "match_parent"
   android:orientation = "vertical"
   android:background = "#c1c1c1"
   android:gravity = "center_horizontal"
   tools:context = ".MainActivity">
   <Button
      android:id = "@+id/asyncTask"
      android:text = "Download"
      android:layout_width = "wrap_content"
      android:layout_height = "wrap_content" />
   <ImageView
      android:id = "@+id/image"
      android:layout_width = "300dp"
      android:layout_height = "300dp" />
   <ImageView
      android:id = "@+id/image2"
      android:layout_width = "300dp"
      android:layout_height = "300dp" />
</LinearLayout>

উপরের কোডে আমরা দুটি ইমেজভিউ এবং একটি বোতাম ঘোষণা করেছি, ব্যবহারকারী বোতামে ক্লিক করলে এটি বিভিন্ন ইন্টারনেট উত্স থেকে দুটি ছবি ডাউনলোড করবে এবং ইমেজভিউতে যুক্ত হবে।

ধাপ 3 − src/MainActivity.java

-এ নিম্নলিখিত কোড যোগ করুন
package com.example.andy.myapplication;

import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
   URL ImageUrl = null;
   InputStream is = null;
   Bitmap bmImg = null;
   ImageView imageView = null;
   ImageView imageView2 = null;
   AsyncTaskExample asyncTask = null;
   AsyncTaskExample2 asyncTask2 = null;
   ProgressDialog p;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Button button = findViewById(R.id.asyncTask);
      imageView = findViewById(R.id.image);
      imageView2 = findViewById(R.id.image2);
      button.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            asyncTask2 = new AsyncTaskExample2();
               asyncTask2.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "https://www.tutorialspoint.com/cprogramming/images/logo.png");
            asyncTask = new AsyncTaskExample();
            asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "https://www.tutorialspoint.com/images/tp-logo-diamond.png");
         }
      });
   }
   private class AsyncTaskExample extends AsyncTask<String, String, Bitmap> {
      @Override
      protected void onPreExecute() {
         super.onPreExecute();
         p = new ProgressDialog(MainActivity.this);
         p.setMessage("Please wait...It is downloading");
         p.setIndeterminate(true);
         p.setCancelable(false);
         p.show();
      }
      @Override
      protected Bitmap doInBackground(String... strings) {
         try {
            ImageUrl = new URL(strings[0]);
            HttpURLConnection conn = (HttpURLConnection) ImageUrl
            .openConnection();
            conn.setDoInput(true);
            conn.connect();
            is = conn.getInputStream();
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inPreferredConfig = Bitmap.Config.RGB_565;
            bmImg = BitmapFactory.decodeStream(is, null, options);
         } catch (IOException e) {
            e.printStackTrace();
         }
         return bmImg;
      }
      @Override
      protected void onPostExecute(Bitmap bitmap) {
         super.onPostExecute(bitmap);
         if (imageView ! = null) {
            p.hide();
            imageView.setImageBitmap(bitmap);
         } else {
            p.show();
         }
      }
   }
   private class AsyncTaskExample2 extends AsyncTask<String, String, Bitmap> {
      @Override
      protected Bitmap doInBackground(String... strings) {
         try {
            ImageUrl = new URL(strings[0]);
            HttpURLConnection conn = (HttpURLConnection) ImageUrl
            .openConnection();
            conn.setDoInput(true);
            conn.connect();
            is = conn.getInputStream();
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inPreferredConfig = Bitmap.Config.RGB_565;
            bmImg = BitmapFactory.decodeStream(is, null, options);
         } catch (IOException e) {
            e.printStackTrace();
         }
         return bmImg;  
      }
      @Override
      protected void onPostExecute(Bitmap bitmap) {
         super.onPostExecute(bitmap);
         if (imageView2 ! = null) {
            imageView2.setImageBitmap(bitmap);
         } else {
         }
      }
   }
}

উপরের কোডে আমরা excuteOnExcutor() দিয়েছি যাতে দুই বা তার বেশি দুটি aynctask চালানো যায়। অ্যান্ড্রয়েড সমান্তরালভাবে চালানোর জন্য সর্বাধিক পাঁচটি যেকোনো কাজকে সমর্থন করবে।

পদক্ষেপ 4৷ - manifest.xml

-এ নিম্নলিখিত কোড যোগ করুন
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android" package = "com.example.andy.myapplication">
   <uses-permission android:name = "android.permission.INTERNET"/>
   <application
      android:allowBackup = "true"
      android:icon = "@mipmap/ic_launcher"
      android:label = "@string/app_name"
      android:roundIcon = "@mipmap/ic_launcher_round"
      android:supportsRtl = "true"
      android:theme = "@style/AppTheme">
      <activity android:name = ".MainActivity">
         <intent-filter>
            <action android:name = "android.intent.action.MAIN" />
            <category android:name = "android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

উপরের কোডে আমরা ইন্টারনেট উৎস থেকে ছবি ডাউনলোড করার জন্য ইন্টারনেট অনুমতি দিয়েছি।

আপনার অ্যাপ্লিকেশন চালানোর চেষ্টা করা যাক. আমি ধরে নিচ্ছি আপনি আপনার কম্পিউটারের সাথে আপনার আসল অ্যান্ড্রয়েড মোবাইল ডিভাইসটি সংযুক্ত করেছেন৷ অ্যান্ড্রয়েড স্টুডিও থেকে অ্যাপটি চালাতে, আপনার প্রোজেক্টের অ্যাক্টিভিটি ফাইলগুলির একটি খুলুন এবং রান ইক্লিপস রান ক্লিক করুন Android AsyncTasks সমান্তরাল এক্সিকিউশন টুলবার থেকে আইকন। একটি বিকল্প হিসাবে আপনার মোবাইল ডিভাইস নির্বাচন করুন এবং তারপরে আপনার মোবাইল ডিভাইসটি পরীক্ষা করুন যা আপনার ডিফল্ট স্ক্রীন প্রদর্শন করবে -

Android AsyncTasks সমান্তরাল এক্সিকিউশন

ব্যবহারকারী বোতামে ক্লিক করলে, এটি নিচের চিত্রের মতো প্রগ্রেস বার ব্যবহার করে ইন্টারনেট সোর্স থেকে ছবি ডাউনলোড করবে -

Android AsyncTasks সমান্তরাল এক্সিকিউশন

এটি দুটি ছবি সমান্তরাল ডাউনলোড করবে এবং নীচে দেখানো হিসাবে প্রদর্শন করবে -

Android AsyncTasks সমান্তরাল এক্সিকিউশন


  1. অ্যান্ড্রয়েডে আনমোডিফাইবলসেট কীভাবে ব্যবহার করবেন?

  2. অ্যান্ড্রয়েডে সিঙ্ক্রোনাইজড সর্টেডসেট কীভাবে ব্যবহার করবেন?

  3. অ্যান্ড্রয়েডে সিঙ্ক্রোনাইজড সেট কীভাবে ব্যবহার করবেন?

  4. টগলবাটনে উদাহরণ?