build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.androidride.asynctaskex"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Colors.xml



    #e91e63
    #c2185b
    #ff8a80

Strings.xml



    AsyncTask Ex

styles.xml



    
    


activity_main.xml




    

    


MainActivity.java


package com.androidride.asynctaskex;

import android.os.AsyncTask;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity
{

Button button;
TextView textview;

String messages[]={"Hi","Hellooooo..","How are you","Heyyyy","Why didn't you reply to me"};

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //initializing Button and TextView

        button=(Button)findViewById(R.id.button);

        textview=(TextView)findViewById(R.id.textview);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view)
            {
               //create instance of asynctask subclass
                MyTask myTask= new MyTask();
               //start asynctask
                 myTask.execute(1000);
            }
        });
    }

    class MyTask extends AsyncTask<Integer,String,Boolean>
    {
        /* Params: 1000 : Integer
           Progress: message content : String
           Result: true : Boolean
         */
        @Override
        protected void onPreExecute()
        {
        //setting text
        textview.setText("Chatting started");
        }

        @Override
        protected Boolean doInBackground(Integer... params)
        {

            for(int i=0;i<5;i++)
            {
                //sending data to onProgressUpdate()
                publishProgress(messages[i]);
                //background thread sleep for 1 second
                SystemClock.sleep(params[0]);
            }
            return true;
        }

        @Override
        protected void onProgressUpdate(String... progress)
        {
            //setting text
            textview.setText(progress[0]);
        }

        @Override
        protected void onPostExecute(Boolean result)
        {

         if(result)
         textview.setText("blocked");
        }
    }
}

AndroidManifest.xml