কম্পিউটার

কিভাবে অ্যান্ড্রয়েডে একটি কার্যকরী AsyncTask বাতিল করবেন?


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

AsynTaskExample mAsyncTask = new AsyncTaskExample();
mAsyncTask.cancel(true);

এই উদাহরণটি দেখায় কিভাবে অ্যানড্রয়েডে অ্যাসিঙ্কটাস্ক এক্সিকিউটিং বাতিল করা যায়।

ধাপ 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" />
</LinearLayout>

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

ধাপ 3 − src/MainActivity.java

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

import android.app.ProgressDialog;
import android.content.DialogInterface;
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 android.widget.Toast;
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;
   AsyncTaskExample asyncTask = 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);
      button.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            asyncTask = new AsyncTaskExample();
            asyncTask.execute("https://www.tutorialspoint.com/images/tp-logo-diamond.png");
         }
      });
   }
   private class AsyncTaskExample extends AsyncTask {
      @Override
      protected void onPreExecute() {
         super.onPreExecute();
         p = new ProgressDialog(MainActivity.this);
         p.setMessage("Please wait...It is downloading");
         p.setIndeterminate(true);
         p.setCancelable(true);
         p.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
               asyncTask.cancel(true);
               Toast.makeText(MainActivity.this,"AsyncTask is stopped",Toast.LENGTH_LONG).show();
            }
         });
         p.show();
      }
      @Override
      protected Bitmap doInBackground(String... strings) {
         try {
            try {
               Thread.sleep(10000);
            } catch (InterruptedException e) {
               e.printStackTrace();
            }
            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();
         }
      }
   }
}

পদক্ষেপ 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>

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

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

কিভাবে অ্যান্ড্রয়েডে একটি কার্যকরী AsyncTask বাতিল করবেন?

আপনি যখন উপরের বোতামে ক্লিক করবেন, এটি একটি প্রগ্রেসবার শুরু করবে, প্রগ্রেসবারের পরিবর্তে যে কোনও জায়গায় ক্লিক করুন এটি নিম্নলিখিত স্ক্রীনটি দেখাবে৷

কিভাবে অ্যান্ড্রয়েডে একটি কার্যকরী AsyncTask বাতিল করবেন?

উপরের স্ক্রীনটি স্পষ্টভাবে দেখায় যে অ্যাসিঙ্ক কাজটি বন্ধ হয়ে গেছে এবং ছবি এখন ইন্টারনেট উত্স থেকে ডাউনলোড করা হয়েছে৷

কিভাবে অ্যান্ড্রয়েডে একটি কার্যকরী AsyncTask বাতিল করবেন?

আপনি যদি অ্যাসিঙ্ক টাস্ক বন্ধ না করেন তবে এটি উপরে দেখানো একটি ছবি ডাউনলোড করবে


  1. অ্যান্ড্রয়েডে একটি স্ট্যাক বাছাই কিভাবে?

  2. কিভাবে অ্যান্ড্রয়েডে ArrayBlockingQueue সাফ করবেন?

  3. অ্যান্ড্রয়েডে AsyncTask থ্রেড কীভাবে বন্ধ করবেন?

  4. অ্যান্ড্রয়েডে একটি AsyncTask এর জন্য একটি টাইমআউট কীভাবে সেট করবেন?