0% found this document useful (0 votes)
78 views10 pages

Practical 10

This document discusses programming threads, handlers, and asynchronous programs in Android. It includes code snippets for: 1. Creating threads to update a progress bar and text view simultaneously. 2. Using a handler to update a text view countdown timer every second instead of using threads. 3. Implementing an asynchronous task to simulate a download progress bar that updates on a background thread. The code examples demonstrate different approaches for running background tasks and updating the UI asynchronously in Android.

Uploaded by

jenni koko
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views10 pages

Practical 10

This document discusses programming threads, handlers, and asynchronous programs in Android. It includes code snippets for: 1. Creating threads to update a progress bar and text view simultaneously. 2. Using a handler to update a text view countdown timer every second instead of using threads. 3. Implementing an asynchronous task to simulate a download progress bar that updates on a background thread. The code examples demonstrate different approaches for running background tasks and updating the UI asynchronously in Android.

Uploaded by

jenni koko
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Name: suyash munde Roll no.

47

PRACTICAL 10

Programming threads, handlers and asynchronized programs.

A. Threads

 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:padding="4dp"/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:onClick="startProgress"/>

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>

 Mainactivity.java

package com.example.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;
import java.util.*;

1
Name: suyash munde Roll no.47

public class MainActivity extends AppCompatActivity {


private ProgressBar bar;
TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView) findViewById(R.id.textView);
bar=(ProgressBar) findViewById(R.id.progressBar1);

}
public void startProgress(View view){

bar.setProgress(0);
new Thread(new Task()).start();
new Thread(new Task2()).start();
}
class Task implements Runnable {

@Override
public void run() {
for (int i = 0; i <= 10; i++) {
final int value = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
bar.setProgress(value);
}
}
}
class Task2 implements Runnable{
@Override
public void run() {
for (int i = 10; i >= 0; i--) {
final int value = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
textView.setText(String.valueOf(value));
}
}
}
}

2
Name: suyash munde Roll no.47

 Output:
Click on Button

3
Name: suyash munde Roll no.47

B. Handlers

 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView"
android:layout_width="234dp"
android:layout_height="wrap_content"
android:text="Count" />

<Button
android:id="@+id/bStartTimer"
android:layout_width="236dp"
android:layout_height="wrap_content"
android:text="Start Timer Count"
android:onClick="timer"/>

<Button
android:id="@+id/bStartNonTimer"
android:layout_width="236dp"
android:layout_height="wrap_content"
android:text="Start Non Timer COunt"
android:onClick="nonTimer"/>

</LinearLayout>

 MainActivity.java

package com.example.myapplication;

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

import java.sql.Time;

4
Name: suyash munde Roll no.47

public class MainActivity extends AppCompatActivity {


TextView textView;
private int stopLoop=30;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView) findViewById(R.id.textView);
}
public void timer(View view)
{
final Handler handler=new Handler();
handler.post(new Runnable() {
@Override
public void run() {
if (stopLoop>0)
{
stopLoop--;
textView.setText("Time:"+stopLoop);
handler.postDelayed(this,1000);

}
else
{

}
}
});
}
public void nonTimer(View view)
{
int i=0;
for(i=0;i<3;i++)
{
textView.setText("Time:"+i);
try {
Thread.sleep(1000);

}
catch (InterruptedException e){
e.printStackTrace();
}
}
}
}

5
Name: suyash munde Roll no.47

 Output:
Click on Start Timer Count. Click on Start Non Timer Count.

6
Name: suyash munde Roll no.47

C. Asynchronized Task

 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="parent"
app:layout_constraintVertical_bias="0.168"/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="112dp"
android:text="Button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView"/>

</android.support.constraint.ConstraintLayout>

 MySync.java

package com.example.myapplication;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.support.v4.content.AsyncTaskLoader;

7
Name: suyash munde Roll no.47

import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MyTask extends AsyncTask<Void, Integer, String> {


Context context;
Button button;
TextView textView;
ProgressDialog progressDialog;
MyTask(Context context, TextView textView, Button button)
{
this.context=context;
this.textView=textView;
this.button=button;
}

@Override
protected String doInBackground(Void... voids) {
int i=0;
synchronized (this)
{
while((i<10))
{
try{
wait(1000);
i++;
publishProgress(i);

}
catch (InterruptedException e){
e.printStackTrace();
}
}
}
return "Download Finish";
}

@Override
protected void onPreExecute() {
progressDialog=new ProgressDialog(context);
progressDialog.setTitle("Download in progress");
progressDialog.setMax(10);
progressDialog.setProgress(0);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.show();

@Override
protected void onPostExecute(String result) {
textView.setText(result);
button.setEnabled(true);

8
Name: suyash munde Roll no.47

@Override
protected void onProgressUpdate(Integer... values) {
int progress=values[0];
progressDialog.setProgress(progress);
textView.setText ("Download in Progress");

}
}

 MainActivity.java

package com.example.myapplication;
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 {


TextView textView;
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView) findViewById(R.id.textView);
button=(Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MyTask myTask=new MyTask(MainActivity.this,textView,button);
myTask.execute();
button.setEnabled(false);

}
});

}
}

9
Name: suyash munde Roll no.47

 Output:
Click on Button.

A progress bar showing the progress bar of Download will appear.

10

You might also like