【问题标题】:Wait for user interaction before finishing onCreate()在完成 onCreate() 之前等待用户交互
【发布时间】:2015-09-18 20:33:13
【问题描述】:

在我的应用程序中,我在 onCreate 中设置了所有内容,然后启动了一个异步任务,该任务设置加载我的所有资源等...就在异步任务启动后,我添加了我的启动画面到我的布局。加载完所有内容后,启动画面会消失,我的 Open GL 渲染器会显示在下方。

我正在尝试做的是添加一个对话框屏幕(基本上,另一个显示位图的 View 类)。而且,我不希望在用户按下我的对话屏幕中的屏幕之前发生任何 Splash 事件。

应该是这样的(注意,这只是我真实 onCreate 的摘录,但应该足以说明问题)

public void onCreate(Bundle savedInstanceState){

        SplashScreen splash = new SplashScreen (getApplication(), width, height);
        ConsentDialog consentDialog = new ConsentDialog(getApplication(), width, height);

        //Add the consent dialog
        layout.addView(consentDialog);

        setContentView(layout);

        super.onCreate(savedInstanceState);

        //Splashscreen
        backgroundResources = new MyAsync(newBundle);
        backgroundResources.execute(); 
        layout.addView(splash);
}

但是,当我运行上述程序时,它会显示启动画面,加载所有内容,然后关闭启动画面,留下对话框。

如何在 setContentView 之后暂停(或产生暂停效果的东西)onCreate 方法,直到用户点击屏幕? (注意,我正在使用我的许可对话框对象中的 onTouch(View v, MotionEvent event) 方法等待触摸事件。

基本上,异步不应该启动直到用户点击屏幕。如果做不到这一点,我该怎么做才能达到我想要的效果?

【问题讨论】:

    标签: android asynchronous oncreate program-flow


    【解决方案1】:

    如何在 setContentView 之后暂停(或产生暂停效果的东西)onCreate 方法,直到用户按下键?

    你没有。

    注意,我正在使用我的许可对话框对象中的 onTouch(View v, MotionEvent event) 方法等待按键

    将您应该等待“直到用户点击屏幕”的逻辑放入onTouch(),或从onTouch() 调用的方法中。

    【讨论】:

      【解决方案2】:

      在 onCreate 时,应用实际上并未对用户处于活动状态(可见或交互)。

      我认为您所能做的就是在显示启动画面之前等待用户的交互(点击)。

      活动是事件驱动的。您应该将 onClickListener 或 onTouchListener 设置(添加)到您的屏幕视图。并且在监听器的实现中,您可以编写显示飞溅的代码。只有当用户点击时才会调用此代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-18
        • 1970-01-01
        • 1970-01-01
        • 2017-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多