私がコーディングしているアプリは、/ 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;
}
}
次に、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が終了した後にアプリ全体を再起動する方法に関する他のヒントはありますか?