AndroidキーリスニングとAsyncTask非同期処理

5108 ワード

コントロールのリスニングの設定
例えばsendのidがあるbuttonは、まずこのようなbutton:private Button send;を宣言し、onCreat(Bundle saveInstancesState)関数でButtonを探しましょう:send=(Button)findViewById(R.id.send);Buttonにリスナーを登録し、onClick()メソッドを呼び出し、ボタンをクリックすると実行します.
send.setOnClickListener(new OnClickListener(){
            public void onClick(View v){
                String status="   "+share.getText().toString();
//share      EditText  
                String TAG="SEND";
                Log.d(TAG,"onClicked with status:"+status);
                new PostTask().execute("+getPackageName()+">"+status);
            }
        });

AsyncTaskの使用
なぜAsyncTaskを使用するのか、私たち自身が携帯電話を適用することを例に挙げると、携帯電話は私たちのすべての操作に敏感であることを望んでいますが、私たちのすべての操作の後には時間のかかる操作がある可能性があります.このように、スレッドが1つしかないと、必然的に私たちをイライラさせます.だから私たちはいくつかのことをバックグラウンドに置いて操作します.
AsyncTaskとは何かAsyncTaskは抽象クラスなので、継承するクラスを作成する必要があります.
public abstract class AsyncTask 
  • Params:AsyncTaskを実行するときに入力するパラメータ
  • Progress:現在のインタフェースに進捗を表示する必要がある場合
  • Result:タスク実行終了後、結果を返す必要がある場合
  • private final class PostTask extends AsyncTask<String,Void,String>
  • 最初の汎用パラメータはStringであり、実行時に文字列をバックグラウンドタスクに転送する必要があることを意味する.この例では,マイクロ博を送信する際の操作,すなわち,メインスレッドで自分が送信する文字を知り,これらの文字をバックグラウンドに転送し,バックグラウンドでpost
  • を具体的に実行する.
  • 2番目のパラメータはVoidであり、すなわち進捗表示
  • が不要である
  • 3番目のパラメータはStringです.つまり、このタスクで送信に成功した場合は「successful」を返し、失敗したら「failed」を返します.現在見ている多くの例はbooleanがこの抽象クラスに常に書き直す必要がある4つのメソッドがあるように設定されています.
  • onPreExecute():バックグラウンドタスクが開始される前に呼び出され、進捗バーを表示するダイアログ
  • などのインタフェース上の初期化操作を行うために使用されます.
  • doInBackground(Params...):このメソッドのすべてのコードはサブスレッドで実行され、タスクが完了した後にreturnでタスクを実行した結果、3番目のパラメータになります.
  • に戻ります.
  • onProgressUpdate(Progress...):この中でUIを操作して、インタフェースを更新することができて、進捗バーの更新に似ています
  • onPostExecute(Result):任務が終わったら進捗バーを消しましょう...
    private final class PostTask extends AsyncTask<String,Void,String>{
            protected String doInBackground(String...params){
                YambaClient yambaCloud=new YambaClient("student","quick");
                try{
                    yambaCloud.postStatus(params[0]);
                    return"successfully posted";
                }catch(YambaClientException e){
                    return"Failed";
                }
            }
            protected void onPostExecute(String result){
                super.onPostExecute(result);
                Toast.makeText(Weibo_Submit.this, result, Toast.LENGTH_LONG).show();
                if(result.startsWith("successfully"))share.setText("");
    
            }
        }
    

    TOASTはAndroidでよく使われるヒントです.他のブログで書いたような気がしますが…どうして忘れたんですか…え…