添加启动画面活动时“客户端尚未准备好”

Posted

技术标签:

【中文标题】添加启动画面活动时“客户端尚未准备好”【英文标题】:"Client not ready yet" when adding splashscreenactivity 【发布时间】:2016-10-10 11:24:13 【问题描述】:

我想向我的应用添加启动画面活动。

我使用的是 android Studio 2.2,预览版 3

我只是修改我的清单,添加新的活动:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.youactive.hts.youactive">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:label="YouactiveSlidingMenu"
        android:screenOrientation="portrait">
    </activity>
    <activity
        android:name=".SplashScreenActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

这是我的 SplashScreenActivity.java

package me.youactive.hts.youactive;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class SplashScreenActivity extends AppCompatActivity


private final int SPLASH_DISPLAY_LENGTH = 3000;

@Override
protected void onCreate(Bundle savedInstanceState)

    super.onCreate(savedInstanceState);
    setContentView(R.layout.splashscreen);


@Override
protected void onResume()

    super.onResume();
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    // Obtain the sharedPreference, default to true if not available
    boolean isSplashEnabled = sp.getBoolean("isSplashEnabled", true);

    if (isSplashEnabled)
    
        new Handler().postDelayed(new Runnable()
        
            @Override
            public void run()
            
                //Finish the splash activity so it can't be returned to.
                SplashScreenActivity.this.finish();
                // Create an Intent that will start the main activity.
                Intent mainIntent = new Intent(SplashScreenActivity.this, MainActivity.class);
                SplashScreenActivity.this.startActivity(mainIntent);
            
        , 3000);
    
    else
    
        // if the splash is not enabled, then finish the activity immediately and go to main.
        finish();
        Intent mainIntent = new Intent(SplashScreenActivity.this, MainActivity.class);
        SplashScreenActivity.this.startActivity(mainIntent);
    


如果我改变我的清单,并把它放在 MainActivity 周围,应用程序就会成功启动

在我的运行窗口中,我可以看到这条消息:

adb shell am start -n "me.project.com.project/me.project.com.project.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 客户还没有准备好..

我在 SO 中读过一些类似的问题,在 Manifest 中添加“android:exported="true" 可以解决这个问题,但在我的情况下不会。

【问题讨论】:

与你的代码无关。这是因为您的模拟器/设备尚未准备好。尝试在AS终端做adb kill-serveradb start-server,然后再试一次 我只在我的设备上运行我的应用程序,我从不使用任何模拟器。我尝试输入您的命令,但它不会改变任何内容 【参考方案1】:

您的 wifi 连接可能是导致此错误的原因。

在进行任何与代码相关的更改之前,重新连接到您的 wifi 可能是个好主意。

【讨论】:

以上是关于添加启动画面活动时“客户端尚未准备好”的主要内容,如果未能解决你的问题,请参考以下文章

如何像启动画面一样只运行一次活动

如何在我的 android 电视应用中添加启动画面?

Android:如何在启动画面上加载主要活动

启动画面后没有出现主要活动

设置内容视图();在我的启动画面活动中出错

如何避免在后台运行时启动应用程序时显示启动画面?