首页 > 解决方案 > 为什么我的倒数计时器没有切换到我的其他活动?

问题描述

我有一个倒数计时器,它会自动从一项活动(家庭活动)切换到我的另一项活动(家庭)。问题是代码会计数但不会显示我的第二个活动,它会回到我的主要活动。有谁知道这个问题的解决方案?

这是我的计时器代码:

package com.login.register;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import java.util.Timer;
import java.util.TimerTask;

public class HomeActivity extends AppCompatActivity {
    Timer timer;
    //---------------------------Timer--------------------------------------------------------------------------------------------
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                Intent t = new Intent(HomeActivity.this, Home.class);
                startActivity(t);
                finish();
            }
        }, 3000);}}

这是我的 Android 清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.login.register">

    <application

        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Login">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:name=".HomeActivity"/>
        <activity android:name=".MainActivity">
        </activity>
    </application>
</manifest>

标签: javaandroid

解决方案


onCreate() 在第一个活动中添加以下代码:

科特林代码:

Handler().postDelayed(Runnable {
            startActivity(Intent(this@HomeActivity,Home::class.java))// Home class should be an activity and should be declared in Manifest file 
        },5000)//5 sec delay

Java 代码:

new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(HomeActivity.this, Home.class)); //Home class should be an activity and should be declared in Manifest file 
            }
        },5000); // 5 sec delay

java.util.Timer两者android.os.Handler都是线程,但处理程序在性能方面比计时器快得多。看到这个diff b/w 处理程序和计时器


推荐阅读