Lesson 7: Background tasks

  • untuk membuat awalan project kita isi kolom pada nama project SimpleAsyncTask kemudian kita pilih template Empty Activity.
  • kita buka activity_main.xml, klik tab Text
  • kita tambahkan layout_margin
  • kemudian kita masukkan xml code seperti dibawah ini
  • ketika kita membuat subclass AsyncTask, kita perlu memberikan informasi tentang apa yang harus dilakukan, saat kita membuat subclass AsyncTask, kita dapat mengkonfigurasi menggunakan parameter berikut:
  • Params: doInBackground()
  • Progress: onProgressUpdated()
  • Result: onPosExecute()
  • example: kita masukkan code seperti dibawah ini
public class MyAsyncTask 
extends AsyncTask <String, Integer, Bitmap>{}
  • kita buat Java Class diberi nama SimpleAsyncTask extends AsyncTask
  • kemudian kita masukkan code seperti dibawah ini
public class SimpleAsyncTask extends AsyncTask <Void, Void, String>{}
  • pada bagian atas class, kita tentukan variabel seperti dibawah ini
private WeakReference<TextView> mTextView;
  • kita implementasikan konstruktur untuk AsyncTask yang menggunakan TextView sebagai parameter dan membuat referensi baru untuk TextView tersebut
SimpleAsyncTask(TextView tv) {
mTextView = new WeakReference<>(tv);
}
  • kita klik pada class, atau tekan Alt+Enter pilih doInBackground() klik OK. kemudian kita tambahkan code seperti dibawah ini
@Override
protected String doInBackground(Void... voids) {
return null;
}
  • kita tambahkan code untuk menghasilkan bilangan bulat acak antara 0 dan 10. seperti dibawah ini
Random r = new Random();
int n = r.nextInt(11);

int s = n * 200;
  • kita tambahkan
try {
Thread.sleep(s);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Awake at last after sleeping for " + s + " milliseconds!";
protected void onPostExecute(String result) {
mTextView.get().setText(result);
}
  • kita masuk ke dalam file MainActivity.java, kemudian kita tambahkan variabel dalam TextView seperti dibawah ini
private TextView mTextView;
  • di method OnCreate()
mTextView = findViewById(R.id.textView1);
package com.example.android.simpleasynctask;

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

/**
* The SimpleAsyncTask app contains a button that launches an AsyncTask
* which sleeps in the asynchronous thread for a random amount of time.
*/
public class MainActivity extends AppCompatActivity {

// The TextView where we will show results
private TextView mTextView;

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

mTextView = findViewById(R.id.textView1);
}

public void startTask(View view) {
// Put a message in the text view
mTextView.setText(R.string.napping);

// Start the AsyncTask.
new SimpleAsyncTask(mTextView).execute();
}
}
  • kita tambahkan code seperti dibawah ini
private static final String TEXT_STATE = "currentText";
  • kemudian di MainActivity dalam method onSaveInstanceState() kita tambahkan seperti ini
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save the state of the TextView
outState.putString(TEXT_STATE,
mTextView.getText().toString());
}
}
  • di method onCreate sebagai fungsi TextView
if(savedInstanceState!=null){
mTextView.setText(savedInstanceState.getString(TEXT_STATE));
  • berikut merupakan code yang terdapat dalam MainActivity
  1. In Android Studio, create a new Java project called PowerReceiver. Accept the default options and use the Empty Activity template.
  2. To create a new broadcast receiver, select the package name in the Android Project View and navigate to File > New > Other > Broadcast Receiver.
  3. Name the class CustomReceiver. Make sure that Java is selected as the source language, and that Exported and Enabled are selected. Exported allows your broadcast receiver to receive broadcasts from outside your app. Enabled allows the system to instantiate the receiver.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store