私のアプリには2つのアクティビティがあります。 1つはアプリケーションを最初に起動するときに表示されるリストです。ユーザーがそれを選択すると、2番目のアクティビティがIntent
で開始されます。後でインテントから情報を取得し、長い一連の計算を実行します(約20秒)。私の第二の活動がどのように見えるかですここで:しかしsetContentView()は、長いタスクを実行するアクティビティにインターフェイスを表示しません。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_screen);
Intent receivedIntent = getIntent();
Bundle MyBundle = receivedIntent.getExtras();
String myName = MyBundle.getString("selected");
/*
* Code for long operation here
*/
活動は、私はそれがすべての(?右)onCreate()
で行われているためである疑いがある長い操作を完了するまで、ユーザーインターフェイスは表示されません。では、これを解決するにはどうすればよいですか?
あなたの答えをありがとう!しかし、まずインターフェイスをレンダリングしたい場合、いつAsyncTaskを実行するのですか? 'onCreate()'や 'onStart()'では実行することができません。なぜならそれは表示されているインタフェースを遅延させるからです。 – Drider
実際には、表示されているインターフェイスは遅延しません。 UIスレッドの実行中に別のスレッドをロードするだけです。 AsyncTaskでUIを更新する必要がある場合は、 'onPreExecute'を実行するか、タスクの最後にある場合は' onPostExecute'を実行することで、これを行うことができます。 – jcxavier
インターフェイスをレンダリングしたい場合は、コードを 'onCreate()'や 'onStart()'に入れるのではなく、ボタンをクリックしてボタンをクリックして重いコードを実行してください... –