我正在編碼的應用程序檢查/ sdcard目錄下是否存在特殊的ZIP文件,如果不是,則開始下載並解壓縮。即使有子目錄,下載和解壓縮工作也能完成。但是,我需要在完成時重新啓動應用程序 - 這並不起作用。AsyncTask完成後重新啓動完整的Android應用程序
起初我有一個特別的活動「PreMainActivity.java」只爲重啓purposal:
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完成後重新啓動整個應用程序?
爲什麼需要在完成後重新啓動應用程序? – dorjeduck
由於我下載的代碼是一個21MB-JavaScriptCode包,我需要在webview中爲應用程序工作 - 所以下載從應用程序首次啓動後開始。但下載完成後,我需要重新加載WebView。但是一個簡單的webview.reload()不起作用 - 重新加載活動 - 並且整個應用程序在一秒鐘內重新啓動。也許不是最好的方式 - 但應用程序的用戶經常面對在第一次啓動之後加載一些內容並且之後必須重新加載的應用程序。所以我決定走這條路:-) – Donny
好的 - 我看到你有一個適合你的答案,所以不需要再從我身邊詳細說明;-) – dorjeduck