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 件のコメント:
コメントを投稿