我正在尝试做什么
Hello Guys,我正在尝试创建一个SplashScreen,它通过Intent启动服务。服务启动后,Activity(SplashScreen)应该等到它从我的服务接收到Intent。
问题
我需要做什么,我的活动等待它从我的服务收到意图。如果你能给我一个很好的教程或一些代码片段,那将是很好的。 在这里,您可以找到我的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();
}
}
答案 0 :(得分:1)
查看此链接可能对您有所帮助。您可以通过活动监控服务状态。
答案 1 :(得分:1)
以下是您的架构应该是什么样的:
<强> INTENT_CST 强>
String START_INIT_ACTION = "your.package.name.START_INIT";
String INIT_ENDED_ACTION = "your.package.name.INIT_ENDED";
<强> SplashActivity 强>
on onCreate:
startService(new Intent(START_INIT_ACTION)
on onResume:
如果您选择在服务中发送广播:
registerReceiver(new BroadcastReceiver(){
//implement onChange()},
new IntentFilter(INIT_ENDED_ACTION));
在onPause中,取消注册接收器以释放内存
<强> LoadingService 强>
扩展AsyncTask来完成你的后台工作。在onPostExecute中,有2个选项:
startActivity(new Intent(...)) // as your doing in your post
或
sendBroadcast(new Intent(INIT_ENDED_ACTION)); stopSelf();
您的清单
使用带有IntentFilter
<action name="your.package.name.START_INIT"/>
声明服务LoadingService
答案 2 :(得分:0)
启动服务不会影响前台屏幕。所以启动启动画面并启动服务,正如您现在所做的那样。在服务中进行操作,之后开始新的活动形成服务本身。