Mac*_*kan 7 android android-intent
使用Theme.NoDisplay主题时出现了一个奇怪的错误:显示另一个活动非常慢!
我从通知中打开一个不可见的活动,然后根据意图操作打开一个新的活动.
如果我使用任何其他主题,Theme.AppCompat那么打开输入对话框需要大约300毫秒.以Theme.NoDisplay主题为主,大约需要5秒钟!
如果我使用的logcat的话,我可以看到onCreate,onResume等在InputActivity被创建看不见的活动后,所谓的几毫秒,但直到它实际上是可见的,它需要几秒钟.我不明白该主题如何创建该效果或如何解决它(不使用服务).
无形的活动:
<activity
android:name=".InvisibleActivity"
android:excludeFromRecents="true"
android:noHistory="true"
android:launchMode="singleTask"
android:taskAffinity=""
android:theme="@android:style/Theme.NoDisplay"/>
Run Code Online (Sandbox Code Playgroud)
要打开的活动:
<activity
android:name=".InputActivity"
android:configChanges="locale"
android:hardwareAccelerated="false"
android:label="@string/lblAddTime"
android:theme="@style/theme.Dialog"
android:windowSoftInputMode="stateVisible|adjustResize" />
Run Code Online (Sandbox Code Playgroud)
通知的意图:
Intent stopIntent = new Intent(context, InvisibleActivity.class);
stopIntent.setAction(InvisibleActivity.STOP_TIMER);
stopIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pStopIntent = PendingIntent.getActivity(context, 0, stopIntent, 0);
Run Code Online (Sandbox Code Playgroud)
而在onCreate中InvisibleActivity,这就是所谓的:
Intent i = new Intent(getApplicationContext(), InputActivity.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
这是相当古老的,但如果有人想知道,这个链接讨论了为什么会发生这种情况:
PSA:如果使用 Theme.NoDisplay 则立即完成活动的新要求不是回归,这一直是它的要求(请参阅 https://developer.android.com/reference/android/R.style.html# 例如Theme_NoDisplay )。
如果不使用它,M 中的平台现在会使应用程序崩溃的原因是,如果不使用它,以前会以非常微妙和神秘的方式崩溃。例如,有时您的应用程序会无缘无故地出现 ANR。
| 归档时间: |
|
| 查看次数: |
2996 次 |
| 最近记录: |