AsyncTask完成后完成调用活动

Atu*_*yal 13 android android-context android-asynctask android-activity

我的通话活动:

public class Hello extends Activity {  

public void onCreate(Bundle savedInstanceState) {

    MyTask mt = new MyTask(this);
    mt.execute();
}
Run Code Online (Sandbox Code Playgroud)

现在在MyTask(一个外部类):

public class MyTask extends AsyncTask<Void, Void, Void> {
private Context mContext;

public MyTask(Context context) {

    mContext = context;
}  

//doinbackground, etc

    protected void onPostExecute() {
    mContext.finish();

}
Run Code Online (Sandbox Code Playgroud)

如果我删除mContext.finish()上面的其他东西正在按预期工作.
但是如果我正在调用mContext.finish(),我会收到一个错误:( The method finish() is undefined for the type Context当我编写mContext时,Eclipse没有显示finish().所以这表明我错误地使用了finish().)

完成任务Hello后,我需要做什么才能完成调用活动MyTask

Squ*_*onk 20

((Activity)mContext).finish();
Run Code Online (Sandbox Code Playgroud)

将a转换Context为a Activity并调用其finish()方法的正确方法.不知道为什么你要完成一个ActivityAsyncTask虽然


Nec*_*net 18

您可以尝试做什么而不是调用context.finish(),为什么不执行这样的回调接口:

public interface TaskCallback{
void done();
}
Run Code Online (Sandbox Code Playgroud)

然后将其实现到您的Activity中

public Hello extends Activity implements TaskCallback{

    .....BUNCH OF ACTIVITY CODE.....

public void onCreate(Bundle savedInstanceState) {

    MyTask mt = new MyTask(this);
    mt.execute();
}

public void done() {
     finish();
}

}
Run Code Online (Sandbox Code Playgroud)

而不是将Context作为参数,而是使用TaskCallback

public class MyTask extends AsyncTask<Void, Void, Void> {
private TaskCallback mCallback;

public MyTask(TaskCallback callback) {

    mCallback = callback;
}  

//doinbackground, etc

    protected void onPostExecute() {
    mCallback.done();

}
Run Code Online (Sandbox Code Playgroud)

你去了,它为你提供了更多的灵活性来定制每个实现.


Sha*_*dow -4

你能试一下吗

this.finish()
Run Code Online (Sandbox Code Playgroud)

似乎是因为使用 mContext 调用它,所以它说未定义。