我有一个class
负责执行后台任务。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
(从AppCompatActivity
派生)每当有耗时的任务,我这样称呼它:
BackgroundTask task = new BackgroundTask(MyActivity.this);
task.execute();
,然后显示在对话框中这是完全正常的等待动画。我想知道:我如何通过这个BackgroundTask
属于MyActivity
(和任何其他活动)的非静态方法(消耗时间),以便我可以从`doInBackground'中调用它?
在此先感谢。
这只有'MyActivity'拴起来。然而,这个班级也将用于从其他活动中进行背景活动。所以我正在寻找从任何活动中调用的方法。 – Atul
@Atul,已更新答案 – dewarder
从某些'BaseActivity'派生的活动(需要等待)是很好的选择。谢谢! – Atul