ボタンのクリックから AsyncTask を実行しようとすると、アプリでタスクが既に開始されていると表示されます。onCreate や onResume などのどこでもタスクを実行しません。プログラムで実行せずに、アクティビティが作成されたときにタスクを開始できますか?
// Login button
Button loginButton = (Button) findViewById(R.id.loginBtn);
loginButton.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
loginTask.execute("");
}
});
// Background login thread
private AsyncTask<Object, String, String> loginTask = new AsyncTask<Object, String, String>(){
@Override
protected String doInBackground(Object... arg0)
{
Log.v(TAG, "Login task started");
LoginManager lm = new LoginManager();
String username = emailText.getText().toString();
String password = passwordText.getText().toString();
loginBundle = new Bundle();
loginBundle.putString(Constants.LOGIN_HANDLER_ID, lm.login(username, password));
loginMessage = Message.obtain(null, 0);
loginMessage.setData(loginBundle);
loginHandler.sendMessage(loginMessage);
return "";
}
};
これは私が実行を呼び出す唯一の場所であり、onCreate() メソッドで作成しているボタンです。タスクが実行されると、タスクが既に開始されているというエラーが発生します。
スレッドを正しくキャンセルしていないのではないかと思い、Motrola Xoom を再起動しました。Xoom を起動してからアプリを実行しましたが、それでもこのエラーが発生します。私に何ができる?アプリは Android SDK 8 を使用しています...そして私は Motorola Xoom で実行しています。