我有两项活动。一个启动和其他主要活动,将片段加载为页面。目前我的启动没有后台任务,它只是坐得漂亮并转换到主要活动,它执行后续任务。
我的问题如何将这些任务委托给启动画面?如何在活动之间传递这些复杂的对象(我可以使用静态变量)
目前我正在考虑放弃飞溅活动并使用主要活动来显示飞溅图像。但主要的活动布局有横幅添加,因此不确定如何用图像覆盖整个屏幕。
请帮忙!
我的主要活动
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/fragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical"
android:layout_above="@+id/fragment_ad"/>
<fragment
android:id="@+id/fragment_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
class="com.controllers.AdFragment" />
</RelativeLayout>
public class SplashActivity extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 2000;
String data = "";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.splash);
data = getIntent().getDataString();
/* New Handler to start the Menu-Activity
* and close this Splash-Screen after some seconds.*/
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
/* Create an Intent that will start the Menu-Activity. */
Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);
if(data != "")
mainIntent.putExtra(Utils.Challenge_DATA_CODE, data);
SplashActivity.this.startActivity(mainIntent);
SplashActivity.this.finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
答案 0 :(得分:1)
也许您可以在背景中创建服务并为前台活动执行一些任务,如下所示:
1)应用程序启动启动屏幕,此活动启动一个服务,该服务开始执行一些后台任务。
2)由于超时或用户触摸而导致启动活动,主要活动显示并检查服务执行的后台任务的进度。
3)请记住,背景任务可能会在主要活动显示之前完成。
@pats,
至于如何将数据从服务传输到主活动,您可以使用视图/数据控制器模型,这意味着有一个单例管理器存储服务生成的复杂数据,然后将这些数据提供给主根据需要进行活动。
希望这些帮助。
答案 1 :(得分:1)
我认为你应该像这样分割工作量:
用户可以使用该应用之前必须拥有的数据和工作 应该在启动画面中执行,然后你应该执行 在继续主要活动之前等待它完成。您 如果没有理由,不要让用户等待。有一个 您可以通过几种方式将数据传输到主要活动:
一个。尽可能使用intent extras。如果有自定义对象,则可以 例如,使用Gson序列化它们,并在您的序列中反序列化它们 主要活动。
湾将数据保存在应用程序类/ sharedpreferences
您可以使用其他线程开始获取稍后需要的数据,但不要让用户等待 很有道理。