2013-05-20 4 views
-1

в последние несколько дней я пытался понять что-то, но не везло, я разрабатывающей андроид игры, у меня есть 3 пакеты теперь каждый со своей целью:Java/Android Асинхронная работа в фоновом режиме

1 - пакет для классов GUI. 2 - пакет, который имеет классы общается с моей службы WCF (Логин/пасс DB) 3 - пакет, который содержит мои асинхронные классы/работников (как мост между GUI и SERVICE)

Я не уверен, если это даже правильный подход, когда дело доходит до разработки игр для Android и java, но я хочу добиться простой регистрации/входа в графический интерфейс и когда пользователь будет зарегистрирован или зарегистрирован, а gui разговаривает с сервисом через «мост», , для пользователя отображается сообщение, например, диалоговое сообщение «Регистрация» или «вход в систему».

Теперь я хотел бы услышать советы и отзывы от более опытных программистов, о том, как это сделать, и если это правильный подход, и, самое главное, некоторые примеры для этого конкретного случая были бы очень полезными, я попытался работать с помощью asynctask, но я не мог понять, как установить связь между этими тремя отдельными пакетами и вернуть результат службы обратно в gui через задачу async.

+0

Как создать свой GUI? Это реализовано через виджеты и макеты? Вы используете OpenGL или Canvas? В первом случае просто рассмотрим некоторые примеры использования AsyncTask. Для других случаев вам нужно быть немного больше в многопоточном и согласующем программировании, чтобы полностью понять процесс. –

+0

Весь материал gui - это widgests/layouts/xml, thats the easy part, я не могу понять, как отправить параметры из gui через asyncTask в службу и обратно с ответом, и я даже не уверен, что AsyncTask лучший apruach здесь. –

ответ

0

Взгляните на этой

public class FindEventsActivity extends Activity { 

ProgressDialog pd; 

// lots of other code up here 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.clickete); 

    pd = new ProgressDialog(this); 
    pd.setMessage("loading"); 

    findViewById(R.id.clickLayout).setOnClickListener(
      new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        new LongOperation().execute(""); 
        pd.show(); 
       } 
      }); 
} 

private class LongOperation extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... params) { 
     for (int i = 0; i < 15; i++) { 
      try { 
       Thread.sleep(1000); // Simulates your intensive work 
       // Update your progress if you want 
       this.publishProgress(); 
      } catch (InterruptedException e) { 
       return "Failed"; 
      } 
     } 
     return "Executed"; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     // Handle fail or success accordingly 
     pd.dismiss(); 
    } 

    @Override 
    protected void onPreExecute() { 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     // Update UI according to your progress 
    } 
} 
} 

Надеется, что это помогает и наслаждаться работой

+0

Это действительно полезный пример, но, как я упоминал выше, я использую мою задачу async в другом пакете, я не хочу, чтобы это был подкласс GUI, я хочу, чтобы gui и async были разделены и чисты, Любые идеи о том, как этот пример можно использовать так, как он мне нужен? передать результат между пакетами (разделенные классы) –

+0

Где бы вы ни создали свою асинтаску, это должен быть результат, который вы получаете. Если у вас возникли проблемы с настройкой диалоговом окне выполнения, отображаемого за пределами вашего GUI-класса, просто оберните его в runOnUITHread –

+0

. Дело в том, что я хочу, чтобы класс async дал результат методу register, который находится в классе GUI, поэтому класс GUI знает, как справиться с ситуацией, например, если регистр преуспел или не удалось, поэтому я не уверен, как сделать отдельный класс задач async передачей результата в gui полностью из класса сервиса, в котором результат из. –

Смежные вопросы