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