java - 创建标题页 Activity

标签 java android multithreading android-activity

有关于一些 Android list 和 Activity 协调的问题。我创建了一个直接进入主要 Activity 的应用程序,用户可以从中与应用程序交互。我想创建一个显示应用程序的简单标题的 Activity (可能带有图片,但那是稍后的事了......),然后在几秒钟的延迟后切换到主要 Activity 。这是我到目前为止所拥有的...

标题 Activity :

public class TitleActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_title);
    try {
        Thread.sleep(3000);
    } catch(InterruptedException ex) {
        Thread.currentThread().interrupt();
    }
    Intent intent = new Intent(this,MainActivity.class);
    startActivity(intent);
}
...

list 文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="khandy.application.convertible"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="khandy.application.convertible.TitleActivity"
        android:label="@string/title_activity_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="khandy.application.convertible.MainActivity"
        android:label="@string/app_name" >
    </activity>
...

启动时发生的情况是,当发生 3 秒延迟时,我的 View /小部件都没有显示在 title_activity 上,然后切换到主 Activity。然后,当我按下 android 后退按钮时,我会退回到标题 Activity ,该 Activity 与 View /小部件一起运行。我相当确定 View /小部件未出现与我非常粗糙的多线程有关...

所以,我的问题是:

  1. 如何在标题 Activity 时显示我的 View /小部件 是第一次打开吗?
  2. 如何将主要 Activity 设置为在以下情况下简单地退出应用程序: 返回按钮被按下?也就是说,我如何使用后退按钮 返回 Android 主屏幕的主要 Activity?

谢谢!

最佳答案

在mainactivity启动后完成titleactivity,这解决了问题2.使用

Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
finish();

对于问题1,使用以下代码

public class SplashScreen extends Activity{

private SplashHandler mSplashHandler = new SplashHandler();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.splash);

    mSplashHandler.sendEmptyMessageDelayed(SplashHandler.TIMER_EXPIRED, 5);
}




class SplashHandler extends Handler {
    static final int TIMER_EXPIRED = 100;
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case TIMER_EXPIRED:
            Intent in = new Intent(SplashScreen.this, nextActivity.class);
            startActivity(in);
            finish();
            break;

        default:
            break;
        }
    }
}

@Override
protected void onDestroy() {
    mSplashHandler = null;
    super.onDestroy();
}
}

关于java - 创建标题页 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19526251/

相关文章:

java - Android Studio 中动态列出按钮(相对布局)

java - 哪些 Scala 语句或代码可以生成无法转换为 Java 的字节码?

android - 从 App Engine 将图像数据发送到 Android 应用程序

java - 抽屉导航应用程序在单击时不会更改 fragment

c++ - 一个线程等待多个线程的信号机制

java - 如果需要但不在范围内,枚举的值是多少?

java - 如何将 JLabel 添加到另一个类的 JFrame 中?

导入旧项目时出现 Android Gradle 错误

javascript - 专业的Node库是如何实现异步执行的?

Ruby 多线程 : making one thread wait for a signal from another