Android 启动Activity而不显示界面的问题解决

本文为了实现启动自己的应用,而不显示应用的界面;

参考博客:

https://blog.csdn.net/blueblood1/article/details/82563694

https://blog.csdn.net/baijinglei12/article/details/49252269

网上参考文章中说在配置文件AndroidManifest.xml中的activity标签下添加如下一句:

android:theme="@android:style/Theme.NoDisplay"


我如此实现后发现会弹出如下问题:

设备界面弹出 Unfortunately, XXX has stopped!

查看报文发现错误是:java.lang.IllegalStateException: You need to use a Theme.AppCompat theme

参考:https://blog.csdn.net/u013694478/article/details/79468952

https://www.cnblogs.com/zhouyou96/p/5323138.html

https://www.2cto.com/kf/201605/506596.html

原来我的Activity继承自 android.support.v7.app.AppCompatActivity,而不是 android.app.Activity

public class MainActivity extends AppCompatActivity

解决方法是:1.将继承AppCompatActivity 更改为继承Activity;

                      2.根据提示来使用AppCompat的theme;

我试图从AppCompat中寻找NoDisplay这个类函数,发现没有,因此尝试第一种方法;


尝试的结果是弹出log信息:

did not call finish() prior to onResume() completing

参考:https://blog.csdn.net/xingnan4414/article/details/75649543

如果在6.0手机上你的Activity主题使用了NoDisplay 的话,正常resume的话会出现ANR,因为你activity启动了但是window显示不出来,系统等待超过5s自然ANR了,这种体验很不好,所以google直接就一言不合抛异常,建议我们使用Theme.Trunslucent.NoTitleBar,如果你想让这个activity完全透明!

登录界面没有界面的情况下,需要把Activity的样式设置为透明。否则在6.0以上机型登录时会出现崩溃现象。既然我的activity是没有UI的,出错的activity主题的配置如下:

<activity android:name=".DialogActivity"
   android:theme="@android:style/Theme.NoDisplay/>

这个一个没有UI的主题,为了解决问题,只需要将主题改成透明的即可,ps:记住透明不等于没有UI哦,如下所示:

<activity android:name=".DialogActivity" 
    ...
    android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

至此,问题解决。


总结下,针对只启动Activity而不显示界面,我的更改操作如下:

1.public class MainActivity extends Activity;

2.AndroidManifest.xml的配置信息更改成如下:

    <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="@android:style/Theme.NoDisplay">
        <activity android:name=".MainActivity"

            android:theme="@android:style/Theme.Translucent.NoTitleBar" >

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

    </application>
 

猜你喜欢

转载自blog.csdn.net/c20081052/article/details/85610632