gpt4 book ai didi

android - AsyncTask 完成后重新启动完整的 Android 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:25 25 4
gpt4 key购买 nike

我正在编写的应用程序会检查/sdcard 下的目录中是否有特殊的 ZIP 文件,如果没有则开始下载并解压缩它。下载和解压缩工作得很好,即使是子目录。但我需要在完成后重新启动该应用程序 - 但这是行不通的。

起初我有一个特殊的 Activity “PreMainActivity.java”只是为了重启目的:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class PreMainActivity extends Activity
{

/**
*
*/
public static Boolean ENABLE_RESTART = false;

@Override
public void onCreate(final Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
PreMainActivity.ENABLE_RESTART = true;
restartMain();
}

@Override
public void onRestart()
{

super.onRestart();
restartMain();
}

/**
*
*/
public void restartMain()
{

if (PreMainActivity.ENABLE_RESTART == true)
{
final Intent mainIntent = new Intent(this, MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mainIntent);
finish();
}
else
{
finish();
}
PreMainActivity.ENABLE_RESTART = false;
}
}

然后我在 DownloadFile.java 中得到了一些代码

@Override
protected void onPostExecute(final String result)
{

MainActivity.mProgressDialogDownload.dismiss();
PreMainActivity.ENABLE_RESTART = true;
final Intent i = new Intent(MainActivity.this, PreMainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
}

据我研究,我需要将 MainActivity 的上下文传递给 DownloadFile.java - 但我仍然不知道如何传递。任何人都可以给我提示如何将上下文传递给同一包中单独文件中的 AsyncTask 吗?或者任何其他提示如何在 AsyncTask 完成后重新启动整个应用程序?

最佳答案

您需要创建 AsyncTask 的构造函数以将当前 Activity 上下文传递为:

   public Context ctx;

public Your_AsyncTask_Class_Name (Context context){
super();
this.ctx=context;

}
......
@Override
protected void onPostExecute(final String result)
{

MainActivity.mProgressDialogDownload.dismiss();
PreMainActivity.ENABLE_RESTART = true;
final Intent i = new Intent(ctx, PreMainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
}

从 Activity 中,您可以将上下文传递为:

AsyncTask_Class_Name asyktaskobj=new AsyncTask_Class_Name(this);
asyktaskobj.execute();

关于android - AsyncTask 完成后重新启动完整的 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com