2012-01-15 9 views
0

私の主なアプリケーションはこれを行います:それはインターネットからデータを取得し、OnClicked、3つの他の画面に行く3つのボタンがあります。データの読み込みが少し遅いかもしれないので、私は非同期タスクを使いたいです。これはasynctaskのサンプルコードです。AsyncTaskとActivityそれを行う方法

class LoginProgressTask extends AsyncTask { 
     @Override 
     protected Boolean doInBackground(String... params) { 
      try { 
       Thread.sleep(4000); // Do your real work here 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      return Boolean.TRUE; // Return your real result here 
     } 

     @Override 
     protected void onPreExecute() { 
      showDialog(AUTHORIZING_DIALOG); 
     } 

     @Override 
     protected void onPostExecute(Boolean result) { 
      // result is the value returned from doInBackground 
      removeDialog(AUTHORIZING_DIALOG); 
     } 
} 

と、これは私の主な活動の私のサンプルです:

public class MainScreen extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     MainTheme(); 
    } 
    public void MainTheme(){ 
     retrieve_data(); //function for getting the data 
     ... action with the buttons, onClicks Listener 
    } 
} 

私の質問は、私はAsyncTaskを理解していないbecuaseどのように私は、それを動作させるために一つの活動でこれらのコードを混在させることができます。または私はdoInBackgroundで何を返すべきですか?

+0

私はこの問題を理解していません。あなたはasynctaskを起動するアクティビティを持っています。あなたのアクティビティを引き起こしているボタンの1つを押すと、タスクに何が起こりますか? – guinny

+0

最初のコードはウェブ上で見つけたサンプルです。そして、関数がデータを取得している間に、このアクティビティの読み込みを行うために、私はmyScreen Activityをsaに挿入したいと思います。この機能が終了すると、ロードバーが消えてしまいます。 – ghostrider

+1

これは私が以前理解していたものとはまったく異なっています。この場合、すべての機能はAsyncTaskにあります。主なアクティビティはonCreate()を起動するだけです。 AsyncTaskは[チュートリアル](http://developer.android.com/reference/android/os/AsyncTask.html)から直接作成することができます。 – guinny

答えて

1

私は>>AsynTaskリンクから学びました。それはあなたにも役立つでしょう、まず全体の例を読んでからあなたのコードにそれを適用し始めます。

0

AsyncTaskの代わりにServiceを使用できます。 Thisがお手伝いします。例えば

0

あなたがログインするButtonを持っている場合、あなたはこのような何か行う必要があります。

Button button; //Here button to go other sreen 
public void onCreate(){ 
    //some business code here 
    //notice: you have declare you button to your layout. I don't post it, but maybe you know how to 
    button.setOnClickListener(new OnClickListener){ 
    @Override 
    public void onClick(View view){ 
     LoginProcessTask loginTask = new LoginProcessTask(this); 
     login.excute(data of param1); 
    } 
    } 
} 

をそして、あなたはあなたのLoginProcessTaskに、あなたはそれを誤って拡張している、ということに気づくはずです。

class LoginProgressTask extends AsyncTask<String, Integer, Integer>{ ......} 
関連する問題