Как создать многопоточность в Android? - PullRequest
1 голос
/ 01 апреля 2011

Я новичок в Android, и я делал некоторые приложения, которые могут использовать многопоточность.Например, потоки приложения могли бы делать следующее, предполагая 2 потока:

Поток 1 Даже если все приложение работает в потоке переднего плана, все время следует запускать прослушивание определенных SMS-сообщений;Представьте, что SMS, которое должно быть перехвачено, это "3456", когда это сообщение отправляется на телефон, тогда поток 1 будет приостановлен, и поток 2 будет активирован:

Тема 2 Когда поток активирован, он будет использовать gpsотслеживать местоположение телефона и будет использовать экземпляр smsManager, чтобы отправить обратно координаты (log, lat) телефона или, если возможно, карту Google обратно на телефон, который отправил сообщение «3456», после чего будет активирован поток 1:

** Как воплотить эту идею в жизнь?

Ответы [ 2 ]

8 голосов
/ 01 апреля 2011

На этот вопрос есть два ответа.

  1. Если вы хотите запустить поток в фоновом режиме в течение длительного периода времени, чтобы прослушать события или запустить обычный процесс, тогда Службы - это путь

  2. Если вам нужно запустить новый поток, чтобы выполнить некоторую обработку один раз, а затем остановить, тогда посмотрите на AsyncTask, который является очень, очень простым способом сделать это и включает в себя простой способ обновления пользовательского интерфейса. во время процесса.

Документы для разработчиков содержат отличную страницу о расположении в Android

Вот некоторая информация о получении SMS в вашем приложении

2 голосов
/ 01 апреля 2011

Посмотрите на Услуги.Многое из этого не обязательно должно быть явно закодировано, если вы используете Услуги в своем приложении.

http://developer.android.com/reference/android/app/Service.html

Редактировать

Inответ на комментарии, вот как я делаю связь от Сервиса к Активности с помощью BroadcastReceiver

public class SomeActivity extends Activity {

BroadcastReceiver receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {

        // Example of pulling a string out of the Intent's "extras"
        String msg = intent.getStringExtra("BroadcastString");

        // ...more stuff

    }
};


@Override
public void onResume()
{
    super.onResume();
    registerReceiver(receiver, new IntentFilter("SomeStringKeyForMyBroadcast"));

    // ... other stuff
}

@Override
public void onPause()
{
    super.onPause();
    unregisterReceiver(receiver);

    // ... other stuff
}

и в моем Сервисе ...

public class SomeService extends Service {

Intent broadcastIntent = new Intent("SomeStringKeyForMyBroadcast");

private void someWorkerMethodInMyService()
{
        // ... other stuff

        broadcastIntent.putExtra("BroadcastString", "Some Data");
        sendBroadcast(broadcastIntent);

        // ... other stuff
}

что-то в этом роде ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...