0

ボタンのクリックから 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 で実行しています。

4

1 に答える 1

2

このようにAsyncTaskを呼び出します

new LoginTask().execute(""); 

どこ

private class LoginTask extends
    AsyncTask<Object,String, String> {
.....

}
于 2012-08-29T18:21:54.850 に答える