+package com.hughes.android.dictionary;\r
+\r
+import java.util.concurrent.Executor;\r
+import java.util.concurrent.Executors;\r
+\r
+import android.app.Activity;\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.os.Handler;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.widget.ProgressBar;\r
+import android.widget.TextView;\r
+\r
+public class DownloadActivity extends Activity {\r
+\r
+ public static final String SOURCE = "source";\r
+ public static final String DEST = "dest";\r
+\r
+ String source;\r
+ String dest;\r
+ \r
+ private final Executor downloadExecutor = Executors.newSingleThreadExecutor();\r
+ private final Handler uiHandler = new Handler();\r
+\r
+ /** Called when the activity is first created. */\r
+ @Override\r
+ public void onCreate(final Bundle savedInstanceState) {\r
+ super.onCreate(savedInstanceState);\r
+ final Intent intent = getIntent();\r
+ source = intent.getStringExtra(SOURCE);\r
+ dest = intent.getStringExtra(DEST);\r
+ if (source == null || dest == null) {\r
+ throw new RuntimeException("null source or dest.");\r
+ }\r
+ setContentView(R.layout.download);\r
+ \r
+ final TextView sourceTextView = (TextView) findViewById(R.id.source);\r
+ sourceTextView.setText(source);\r
+ \r
+ final TextView destTextView = (TextView) findViewById(R.id.dest);\r
+ destTextView.setText(dest);\r
+\r
+ final ProgressBar progressBar = (ProgressBar) findViewById(R.id.downloadProgressBar);\r
+ progressBar.setIndeterminate(false);\r
+ progressBar.setMax(100);\r
+\r
+ final Runnable runnable = new Runnable() {\r
+ public void run() {\r
+ \r
+ for (int i = 0; i < 100; ++i) {\r
+ \r
+ final int progress = i;\r
+ uiHandler.post(new Runnable() {\r
+ public void run() {\r
+ Log.d("THAD", "Setting progress: " + progress);\r
+ progressBar.setProgress(progress);\r
+ }\r
+ });\r
+ \r
+ try {\r
+ Thread.sleep(100);\r
+ } catch (InterruptedException e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ \r
+ final TextView downloadComplete = (TextView) findViewById(R.id.downloadComplete);\r
+ uiHandler.post(new Runnable() {\r
+ public void run() {\r
+ progressBar.setProgress(100);\r
+ downloadComplete.setVisibility(View.VISIBLE);\r
+ }\r
+ });\r
+ \r
+ }};\r
+ downloadExecutor.execute(runnable);\r
+ \r
+ }\r
+ \r
+}\r