코딩중인 앱이/sdcard 아래의 디렉토리에 특별한 ZIP 파일이 있는지 확인하고 그렇지 않은 경우 다운로드하고 압축을 풉니 다. 다운로드 및 압축 풀기 작업은 하위 디렉토리에서도 가능합니다. 하지만 끝나면 앱을 다시 시작해야합니다. 작동하지 않습니다.AsyncTask가 완료된 후 완전한 Android 앱 다시 시작
은 처음에는 특별한 활동 만 다시 시작 purposal은 "PreMainActivity.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);
}
지금까지 내가 가지고로 DownloadFile.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;
}
}
내가 MainActivity의 문맥을 DownloadFile.java에 전달할 필요가 있는지를 조사했지만, 아직 실마리가 없습니다. 누구나 같은 패키지 내의 별도의 파일에서 AsyncTask에 컨텍스트를 전달하는 방법에 대한 힌트를 얻을 수 있습니까? 또는 AsyncTask가 완료된 후 전체 응용 프로그램을 다시 시작하는 방법에 대한 다른 힌트를 원하십니까?
왜 끝나면 응용 프로그램을 다시 시작해야합니까? – dorjeduck
다운로드 코드는 21MB-JavaScriptCode 패키지로, 앱이 작동하려면 webview에서 필요하므로 앱을 처음 시작한 후 다운로드가 시작됩니다. 그러나 다운로드가 끝나면 WebView를 다시로드해야합니다. 그러나 간단한 webview.reload()는 작동하지 않습니다. 다시 액티비티를 다시로드하면 전체 앱이 다시 시작됩니다. 어쩌면 최선의 방법은 아니지만, 앱을 처음 사용하는 사용자는 앱을 처음 실행 한 후 일부 콘텐츠를로드하고 그 후에 다시로드해야하는 앱에 자주 직면 할 수 있습니다. 그래서 저는 이쪽으로 가기로 결정했습니다 :-) – Donny
ok - 당신을 위해 잘 작동하는 답변을 얻었으므로 제 편에서 더 자세히 설명 할 필요가 없습니다 ;-) – dorjeduck