如何在不启动新活动[B]的情况下完成活动[B]中的活动[A]?

时间:2014-06-10 11:26:54

标签: android android-intent android-activity transparent flags

我有我的第一个活动 - [A]和我的第二个活动[B]。 我在BackGeroundTask的PreExecute中使用

从Activity [A]开始透明 - [B]活动
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);

从我的PostExecute我想关闭我的透明活动[B]继续使用Activity [A],如:

Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

但它给了我错误原因我没有正确的意图。

我可以这样做:

Intent intent = new Intent(getAplicationContext(), ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

此代码将创建一个新的Activity [A]。 但我需要继续使用Activity [A]来创建一个新的Activity [A]。 如何在没有错误的情况下从活动[A]中完成()活动[B],返回活动[A]并继续我的工作。

private class BackGroundTask extends AsyncTask<Void, Void, Void>
{


    @Override
    protected void onPreExecute()
    {
        StartPreExecute();
    }

    @Override
    protected Void doInBackground(Void... params)
    {
        //sending request to server and waiting response here
        return null;
    }

    protected void onPostExecute(Void result)
    {
        super.onPostExecute(result);
        StartPostExecute();
    }


}

protected Void doInBackground(Void... params)
{
    return null;
}

private void StartPreExecute()
{
    Intent intent = new Intent(SigninActivity.this, LoadingLayout.class);
    startActivity(intent);
}

private void StartPostExecute()
{
    Intent intent = new Intent(getAplicationContext(), SigninActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_);
    startActivity(intent);
}

1 个答案:

答案 0 :(得分:3)

如果你说Actvity B应该是透明的,我建议使用Service。服务在某种程度上类似于活动,但它们在后台运行,并且对用户不可见。服务完成任务后,稍后完成()。你不需要离开活动A.这可能是你需要的吗?