私はウェブからデータをダウンロードする1つのアクティビティを持っています。ダウンロードプロセスの途中で、プロセスを複数回ダウンロードするとアプリケーションが終了します。私はAsyncTaskを使用してデータとRunnableをダウンロードし、完了したステップを取得しています。ここに私のコードです。タスクの終了時にハンドラのコールバックを削除する必要がありますか?私がコールバックをポーズまたは削除メソッドに置くと、強制終了エラーが発生します。ここでプロセスの途中でアプリケーションがアンドロイドで終了しますか?
mBackgroundHandler = new Handler();
mRunnable = new Runnable()
{
public void run()
{
mCounterProgress = KamaApplication.getStep();
Log.v(TAG, "Progress: " + mCounterProgress);
mRefreshProgress.setProgress(mCounterProgress);
mRefreshProgress.invalidate();
if(KamaApplication.getTotalStep() == 100 && KamaApplication.getStep() == 99)
{
mStop = true;
}
if(!mStop)
{
mBackgroundHandler.postDelayed(this, 1000);
}
}
};
mBackgroundHandler.postDelayed(mRunnable, 1000);
は私のAsyncTask
private class DownloadFilesTask extends AsyncTask<Void, Integer, Void>
{
protected Void doInBackground(Void... params)
{
try
{
StepsGeneratorInputJsonData stepsGeneratorInputJsonData = new StepsGeneratorInputJsonData();
stepsGeneratorInputJsonData.provider = "Android";
stepsGeneratorInputJsonData.identification = "Vogue";
stepsGeneratorInputJsonData.password = "abcd";
mResult = createAndExecuteStepsGenerator(stepsGeneratorInputJsonData);
JSONObject mNewJSONObject = new JSONObject(mResult);
String mEndDate = mNewJSONObject.getString("endDate");
if(mEndDate.equals("null"))
{
mRefreshSuccess = false;
}
else
{
mRefreshSuccess = true;
}
}
catch (Exception eException)
{
Log.v(TAG, "HotTestGettingError: " + eException.toString());
mRefreshSuccess = false;
}
return null;
}
protected void onProgressUpdate(Integer... progress)
{ }
protected void onPostExecute(Void result)
{
if(mRefreshSuccess)
{
insertData();
}
else
{
Message mMessage = new Message();
mMessage.what = 0;
mHandler.sendMessage(mMessage);
}
mBackgroundHandler.removeCallbacks(mRunnable);
updateDisplay();
}
}
であると私はlogcatを見て、これだ:私は
<activity android:name=".Usage" android:screenOrientation="portrait"
android:clearTaskOnLaunch="true">
とも設定ファイルAndroidManifestに入れている
06-25 12:08:28.007: INFO/WindowManager(128): WIN DEATH: Window{408fc1d8 com.mygosoftware.kama/com.mygosoftware.kama.Usage paused=false}
06-25 12:08:28.011: INFO/ActivityManager(128): Process com.mygosoftware.kama (pid 17691) has died.
06-25 12:08:28.078: INFO/ActivityManager(128): Start proc com.sec.android.app.twlauncher for activity com.sec.android.app.twlauncher/.Launcher: pid=17817 uid=10015 gids={3003, 1015, 3002}
06-25 12:08:28.078: INFO/ActivityManager(128): Low Memory: No more background processes.
06-25 12:08:28.148: INFO/Zygote(17817): Zygote: pid 17817 has CALL PRIVILEGED permission, then set capability for CAP_SYS_ADMIN (21)
06-25 12:08:28.312: INFO/ActivityThread(17817): Pub com.sec.android.app.twlauncher.settings: com.sec.android.app.twlauncher.LauncherProvider
06-25 12:08:28.445: INFO/Launcher(17817): onCreate(): product model family:S1 product model : GT-I9000
06-24 16:47:38.269: ERROR/InputDispatcher(128): channel '40823250 com.mygosoftware.kama/com.mygosoftware.kama.Usage (server)' ~ Consumer closed input channel or an error occurred. events=0x8
06-24 16:47:38.269: ERROR/InputDispatcher(128): channel '40823250 com.mygosoftware.kama/com.mygosoftware.kama.Usage (server)' ~ Channel is unrecoverably broken and will be disposed!
06-24 16:47:38.304: INFO/ActivityManager(128): Process com.mygosoftware.kama (pid 7637) has died.
を
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
また、 onPause()
メソッドを私の活動に入れてください。
また、私はこのリンクを参照しましたActivity restarts on Force Close。鉱山は非常に似た問題です。私は彼らが答えで書いたものすべてをやったが、まだエラーが出ている。
このエラーを削除するにはどうすればよいですか?
ありがとうございました。
あなたはstartDownload()を使ってこのメソッドを呼び出す必要があります。 – Android
こんにちはプラグラ、ダウンロードは私の問題ではありません。データは正常にダウンロードされますが、別のアカウントで起動するとアプリケーションがエラーなくプロセスの途中で終了しますが、logcatを見ると私の質問には入ります。ありがとう。 –
こんにちはプラグラ、私はstartDownload()を使ったような別のメソッドでこのメソッドを呼び出しています。ありがとう。 –