本文为了实现启动自己的应用,而不显示应用的界面;
参考博客:
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>