私はclass
にバックグラウンドタスクを実行しています。 (AppCompatActivity
由来)Android:AsyncTask(doInBackground経由)からアクティビティの非静的メソッドを呼び出す方法
public class BackgroundTask extends AsyncTask<Void, Void, Void>
{
private ProgressDialog dialog;
public BackgroundTask(AppCompatActivity activity)
{
dialog = new ProgressDialog(activity);
}
@Override
protected void onPreExecute()
{
dialog.setMessage("Doing something, please wait.");
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setCancelable(false);
dialog.setProgress(0);
dialog.setMax(100);
dialog.show();
}
@Override
protected void onPostExecute(Void result)
{
if (dialog.isShowing())
{
dialog.dismiss();
}
}
@Override
protected Void doInBackground(Void... params)
{
try
{
// How can I call non-static method of MyActivity here?
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return null;
}
}
MyActivity
時間のかかるタスクがある時はいつでも、私はこのようにそれを呼び出す:
BackgroundTask task = new BackgroundTask(MyActivity.this);
task.execute();
そして完全に罰金であるダイアログでアニメーションを待って表示されます。私は知りたいのですが、は、MyActivity
(および他のアクティビティ)に属する非静的メソッド(時間を消費する)をBackgroundTask
に渡すことができるので、 `doInBackground 'から呼び出すことができますか?
ありがとうございます。
ためにのみ 'MyActivity'とそれを結ぶことになります。しかし、このクラスは、他のアクティビティからバックグラウンドアクティビティを実行するためにも使用されます。だから私はどのような活動から呼び出されるメソッドを探しています。 – Atul
@Atul、updated answer – dewarder
いくつかの 'BaseActivity'から派生した活動(待つ必要性)が良いオプションです。ありがとう! – Atul