2019 May 03.
FirstActivity.java
(OnClickListener等は省略)
SecondTask.java
FirstActivity.java
(OnClickListener等は省略)
- public class FirstActivity extends AppCompatActivity {
- Button button1 = (Button) findViewById(R.id.button1);
- button1.setEnabled(true);
- TextView textView1 = (TextView) findViewById(R.id.textView1);
- textView1.setText("start")
- new SecondTask(this).execute();
- }
SecondTask.java
- public class SecondTask extends AsyncTask {
- private WeakReference weakReference;
- /**
- * make WeakReference in constructor
- * 参照しているActivityを引数にしてWeakReferenceのインスタンスを生成する
- **/
- SecondTask(Context referenceContext) {
- private WeakReference weakReference;
- weakReference = new WeakReference<>(referenceContext);
- }
- /**
- * use of WeakReference in onPostExecute
- * weakReference.get()で参照しているActivityのContextを取得し、それを通じてView を設定したりする
- **/
- @Override
- protected void onPostExecute(String result) {
- Activity activity = (Activity) weakReference.get();
- if (activity == null || activity.isFinishing()) return;
- activity.findViewById(R.id.button1).setEnabled(false);
- TextView tv = activity.findViewById(R.id.textView1);
- tv.setText("end");
- }
- }
0 件のコメント:
コメントを投稿