setContentView () не отображает интерфейс в Activity, выполняющий длинную задачу - PullRequest
0 голосов
/ 16 марта 2012

В моем приложении есть два вида деятельности.Одним из них является список, который представлен при первом запуске приложения.Когда пользователь выбирает его, вторая операция запускается с Intent.Последний берет информацию из намерения и выполняет длительную серию вычислений (около 20 секунд).Вот как выглядит мое второе действие:

@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()?).Так что я могу сделать, чтобы это исправить?

1 Ответ

1 голос
/ 16 марта 2012

Точно! Ваш пользовательский интерфейс будет отображаться только после onCreate() и onStart().

Чтобы предотвратить это, вы должны перенести тяжелый груз на другую нить, предпочтительно используя AsyncTask.

Статья Painless Threading от Android Developer объясняет, как сделать это довольно хорошо, посмотрите! http://developer.android.com/resources/articles/painless-threading.html

...