Android 在原始活动完成时阻止活动关闭

Android 在原始活动完成时阻止活动关闭,android,android-intent,android-activity,Android,Android Intent,Android Activity,我正在编写一个应用程序,它可以在web正常运行之前从web获取信息。因此,我编写了一个InitialActivity,在启动时显示加载屏幕。 此初始屏幕上的按钮允许您在等待时转到InfoActivity。如果在InfoActivity运行时加载完成,则此InfoActivity将停止,并且成功执行InitialActivity的MainActivity将启动 InitialActivity包含启动InfoActivity的方法。使用内部类定义的异步任务从网页加载。如果加载成功,onPostExe

我正在编写一个应用程序,它可以在web正常运行之前从web获取信息。因此,我编写了一个InitialActivity,在启动时显示加载屏幕。 此初始屏幕上的按钮允许您在等待时转到InfoActivity。如果在InfoActivity运行时加载完成,则此InfoActivity将停止,并且成功执行InitialActivity的MainActivity将启动

InitialActivity包含启动InfoActivity的方法。使用内部类定义的异步任务从网页加载。如果加载成功,onPostExecute()方法将启动mainactivity

public class InitialActivity extends Activity{  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_initial);

        new RequestTask().execute(getString(R.string.website));
    }

    public void startInfoActivity(View v){
        Intent i = new Intent(this, InfoActivity.class);
        startActivity(i);
    }

    private class RequestTask extends AsyncTask<String, Void, Boolean>{

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
    @Override
    protected Boolean doInBackground(String... uri){
        //DO THE INFORMATION FETCHIN
    }

    @Override
    protected void onPostExecute(Boolean passed) {
        super.onPostExecute(passed);

        if(passed){
            //SAVE THE FETCHED INFORMATION


            //close this activity and lauch main activity
            Intent i = new Intent(InitialActivity.this, MainActivity.class);
            startActivity(i);

            // close this activity
            finish();
    }
}
公共类InitialActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_首字母);
新建RequestTask().execute(getString(R.string.website));
}
公共无效StartInfo活动(视图五){
意图i=新意图(这个,InfoActivity.class);
星触觉(i);
}
私有类RequestTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的布尔doInBackground(字符串…uri){
//这些信息能被接收吗
}
@凌驾
受保护的void onPostExecute(已传递布尔值){
super.onPostExecute(已通过);
如果(通过){
//保存获取的信息
//关闭此活动并启动主活动
意图i=新意图(InitialActivity.this,MainActivity.class);
星触觉(i);
//关闭此活动
完成();
}
}
当异步任务中的加载完成时,是否有方法阻止InfoActivity的自动关闭?当用户选择离开InfoActivity时,MainActivity应该显示

提前谢谢。

试试这个

onPostExecute方法使用此代码进行更改

Intent intent = new Intent(MainActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

不能理解这里的问题…你能更精确一点吗(用一个简单的图表)?(能为图表提供帮助)在启动
MainActivity
之前,通过
Intent
@christocvb进行检查类似的操作?根据此代码,infoactivity似乎尚未完成。因此,在返回时,请确保我到达infoactivity。因此,仅当存在用户交互时,您才希望显示
infoactivity
,并取消
异步sk
来阻止
onPostExecute()
调用,对吗?