首页 > 编程语言 >android - AsyncTask 完成后重新启动完整的 Android 应用程序

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

时间:2023-04-01 12:12:19浏览次数:52  
标签:ENABLE public AsyncTask PreMainActivity Intent android Android RESTART

我正在编写的应用程序会检查/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/

标签:ENABLE,public,AsyncTask,PreMainActivity,Intent,android,Android,RESTART
From: https://www.cnblogs.com/skynight/p/17278383.html

相关文章

  • 直播网站源码,Android中点击图片放大的简单方法
    直播网站源码,Android中点击图片放大的简单方法简单的思路就是把要放大的图片显示在一个对话框中显示出来 Java代码: publicvoidonThumbnailClick(Viewv){//finalAlertDialogdialog=newAlertDialog.Builder(this).create();//ImageViewimgView=getView();//di......
  • android popwindow实现左侧弹出菜…
    http://www.apkbus.com/android-44903-1-1.html学习一下PopupWindow的浮层显示效果。PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等。为了将PopupWindow的多个功能展现并力求用简单的代码实......
  • Android NDK开发环境搭建
    必先利其器, 下面介绍下EclipseSDKNDKCygwinCDT 集成开发环境的搭建。1、Android 开发环境搭建Android开发环境搭建不是重点,相信看此文章的很多人都已经搭建成功,这里随便概述性的说说。1)     下载JDK2)     下载Eclipse3)     下载AndroidSDK4)  ......
  • android anr分析方法
    一:什么是ANRANR:ApplicationNotResponding,即应用无响应二:ANR的类型ANR一般有三种类型:1:KeyDispatchTimeout(5seconds)--主要类型按键或触摸事件在特定时间内无响应2:BroadcastTimeout(10seconds)BroadcastReceiver在特定时间内无法处理完成3:ServiceTimeout(20seconds)--小概率......
  • Android 4.0系统发布会全程精彩瞬间集锦
    10月19日上午10点,Google和三星联合在香港举办发布会,代号“冰激凌三明治”的新一代Android4.0系统终于揭开神秘面纱,首款搭载该系统的智能手机GalaxyNexus也惊艳亮相。尽管发布会只有短短的一个小时,Android用户体验总监MatiasDuarte的演讲水平也不可与乔布斯同日而语,但是总体来说,......
  • Android获取所在地城市名
    1.staticStringcityName="深圳";//城市名2.publicstaticStringcityName;//城市名3.4.privatestaticGeocodergeocoder;//此对象能通过经纬度来获取相应的城市等信息5.6.7.publicstaticvoidgetCNBylocation(Contex......
  • Android图片转换类 1. Bitmap去色,…
    publicclassImageTools{publicstaticBitmaptoGrayscale(BitmapbmpOriginal){intwidth,height;height=bmpOriginal.getHeight();width=bmpOriginal.getWidth();BitmapbmpGrayscale=Bitmap.createBitmap(width,height......
  • android 监听SDCard安装和卸载的代…
    //监听类privatefinalBroadcastReceiversdcardListener=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){Stringaction=intent.getAction();Log.d("TAG","sdcar......
  • android内存统计
    由于linux内核和nativeservice使用的内存在settings中统计不出来,因此对于分析内存相关问题时,使用procrank命令则能比较清晰的获取每个进程占用的内存资源$adbshellprocrankPIDVssRssPssUsscmdline15949668K39664K19857K17016Ksystem_server23629688K29676K1......
  • 关于android分辨率和使用iphone版…
    为了节省成本,开发app,一般情况下android和iphone用的是一套设计图。那适配怎么办?今天统计了下android的分辨率主要有:三星i9300 galaxys3 1280x720像素三星galaxys4  1920x1080像素还有经典的分辨率:854x480 还有部分960x540的。他们有个共同的特点,就是高宽比都是 1.......