Активность в ожидании намерения

1

То, что я пытаюсь сделать


Привет, ребята, я пытаюсь создать SplashScreen, который запускает Сервис над намерением. После того, как служба начнет работу (SplashScreen), она должна подождать, пока она не получит намерение от моей Службы.

Вопрос


Что мне нужно сделать, чтобы моя активность ожидала, пока она не получит намерение от моей Службы. Было бы неплохо, если бы вы могли предоставить мне хороший учебник или некоторые фрагменты кода. Здесь вы найдете код моего SplashScreen.

Код


package de.stepforward;

import de.stepforward.service.VideoService;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class SplashActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        // Sagt dem Video-Service das er beginnen soll die
        // Videos herunter zu laden
        Intent LoadVideos = new Intent(this, VideoService.class);
        LoadVideos.putExtra("VIDEO_SERVICE", "start");
        startService(LoadVideos);

        // In this thread I want that it waits for my Intent
        // and than it goes to the next Activity
        Thread splashThread = new Thread() {

            @Override
            public void run() {
                try {
                    int waited = 0;
                    while (waited < 3000) {
                        sleep(100);
                        waited += 100;
                    }
                }
                catch (InterruptedException e) {
                    // do nothing
                }
                finally {
                    finish();
                    final Intent Showvideo = new Intent(SplashActivity.this,
                                                        ChannelTest.class);
                    startActivity(Showvideo);
                }
            }
        };
        splashThread.start();
    }
}
Теги:
wait
android-intent

3 ответа

1
Лучший ответ

Вот как выглядит ваша архитектура:

INTENT_CST


String START_INIT_ACTION = "your.package.name.START_INIT";
String INIT_ENDED_ACTION = "your.package.name.INIT_ENDED";

SplashActivity


В onCreate:

startService(new Intent(START_INIT_ACTION)

В onResume:
Если вы решите отправить трансляцию в свой сервис:

registerReceiver(new BroadcastReceiver(){
    //implement onChange()},
    new IntentFilter(INIT_ENDED_ACTION));

В onPause отмените регистрацию вашего приемника на свободную память

LoadingService


Расширьте AsyncTask, чтобы сделать свой фоновый материал. В onPostExecute есть два варианта:

startActivity(new Intent(...)) // as your doing in your post

или

sendBroadcast(new Intent(INIT_ENDED_ACTION)); stopSelf();

Ваш манифест


Объявите службу LoadingService с помощью IntentFilter с <action name="your.package.name.START_INIT"/>

1

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

Служба Restful API

0

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

  • 0
    Ах, хорошая идея, но разве не возможно, что заставка ждет намерения? После этого действие начинается через SplashScreen =)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню