Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在AsyncTask完成后重新启动完整的Android应用程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我编码的应用程序检查/ sdcard下的目录中是否有特殊的ZIP文件,如果没有,则开始下载并解压缩.即使是子目录,下载和解压缩也可以工作.但是我需要在完成后重新启动应用程序 – 这不起作用.

起初我有一个特殊的活动“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;
}
}@H_772_10@ 
 

然后我在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);
}@H_772_10@ 
 

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

解决方法

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

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);
}@H_772_10@ 
 

从Activity可以传递上下文:

AsyncTask_Class_Name asyktaskobj=new AsyncTask_Class_Name(this);
asyktaskobj.execute();@H_772_10@
@H_874_36@

大佬总结

以上是大佬教程为你收集整理的在AsyncTask完成后重新启动完整的Android应用程序全部内容,希望文章能够帮你解决在AsyncTask完成后重新启动完整的Android应用程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。