如何在当前活动仍在启动时启动本机活动

时间:2011-08-01 15:51:29

标签: android android-activity

我需要一个关于如何在当前活动仍在启动时启动本机活动的建议..我阅读reference并且我看不出什么是获得我需要的正确方法。

所以要解释......

我需要根据某些条件启动原生视频活动并播放视频。 所以而不是以下内容:

1. User launch an app (main activity is started)
2. Welcome screen is displayed while the app is loading
3. App is ready & running

我需要这样的东西:

1. User launch an app
1.1. Check If some video is available
1.2. Play the video 
1.3. Once the video is finished or user press the back key, continue to step 2.
2. Welcome screen is displayed while the app is loading
3. App is ready & running

我目前的尝试是基于这样的事实:一旦某项新活动开始,活动就会暂停,所以我只是在主要活动的onResume调用中开始我的视频活动:

public void onResume()
{
    super.onResume();
    if (someCondition && !videoIsPlayed)
    {
        videoIsPlayed = true;
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
        final Uri data = Uri.parse(videoURL);
        intent.setDataAndType(data, "video/mp4");
        startActivity(intent);
    }
}

但是,我没有发现任何证据证明上述代码实际上是安全的......

我的其他想法是介绍两个类似于活动选择器的活动,在onCreate中我会选择启动哪个活动:

// Chooses which activity to start
public class ActivityChooser extends Activity
{
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        if (someCondition)
        {
            // start main application activity
        } else 
        {
            // start activity that plays the video using the native video activity
        }
        finish();
    }
}

另一项启动原生视频活动的活动

// Starts the native video activity and once it finishes starts the main app activity
public class VideoPlayback extends Activity
{
    public void onResume()
    {
        super.onResume();
        if (someCondition && !videoIsPlayed)
        {
            videoIsPlayed = true;
            Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
            final Uri data = Uri.parse(videoURL);
            intent.setDataAndType(data, "video/mp4");
            startActivity(intent);

            // Question that remains here is how to know when the native video activity is done with
            // the playback in order to start main application activity
        }
    }
}

编辑:由于答案不多,我们可以评论我的第一个方法。

所以任何建议都非常受欢迎!

谢谢你提前!

1 个答案:

答案 0 :(得分:2)

在onResume()中,您的活动处于运行状态,并且在调用onPause之前将处于该状态。在这种状态下,调用新活动是安全的。你的代码在onResume:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
final Uri data = Uri.parse(videoURL);
startActivity(intent);

很好(虽然显然你应该对uri做点什么)。这将导致主要活动暂停并启动视频活动。将其置于不同的活动中基本上是不必要的;但是,由于您想知道视频何时结束,您可以在VideoPlayback活动中使用VideoView,而不是在新意图中启动它。然后你可以附加一个setOnCompletionListener(MediaPlayer.OnCompletionListener l),以便在视频完成时被通知,并将结果返回给主意图(使用startActivityForResult调用VideoPlayback,并在onActivityResult中接收完成通知。