Runnable Thread start a new Thread inside the same java class.
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private Button mDownloadButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDownloadButton = (Button) findViewById(R.id.btn);
mDownloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Downloading", Toast.LENGTH_SHORT).show();
Runnable runnable = new Runnable() {
@Override
public void run() {
downloadSong();
}
};
Thread thread = new Thread(runnable);
thread.setName("DownloadThread");
thread.start();
}
});
}
private void downloadSong() {
long endTime = System.currentTimeMillis() + 10*1000; //wait 10 seconds
while (System.currentTimeMillis() < endTime) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.d(TAG, "Song downloaded!");
}
}
OR use a normal java Thread:
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private Button mDownloadButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDownloadButton = (Button) findViewById(R.id.downloadButton);
mDownloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Downloading", Toast.LENGTH_SHORT).show();
DownloadThread thread = new DownloadThread();
thread.setName("DownloadThread");
thread.start();
}
});
}
}
////////////////////////////////////////// ON DownloadThread Java Class //////////////////////////////////////////////////
public class DownloadThread extends Thread {
private static final String TAG = DownloadThread.class.getSimpleName();
@Override
public void run() {
for (String song : Playlist.songs) {
downloadSong();
}
}
private void downloadSong() {
long endTime = System.currentTimeMillis() + 10*1000; //wait 10 seconds
while (System.currentTimeMillis() < endTime) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Log.d(TAG, "Song downloaded!");
}
}