android – 按主页按钮后从系统覆盖窗口启动活动

前端之家收集整理的这篇文章主要介绍了android – 按主页按钮后从系统覆盖窗口启动活动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个系统覆盖窗口,像Facebook的聊天头一样的浮动视图.

用户按下窗口时,将启动一个活动以显示内容.

问题是如果用户通过按主页按钮离开我的应用程序,则由于系统限制(https://code.google.com/p/android/issues/detail?id=4536),活动无法在5秒内启动.活动在5秒后显示.

我之前的SO问题没有找到任何解决方案.但是,有一个应用程序,Link Bubble,它克服了这个问题.当用户按下浮动气泡视图时,活动总是可以立即弹出.

有谁知道如何做到这一点?

这是我系统覆盖窗口的LayoutParams:

windowParams = new WindowManager.LayoutParams(
            width,height,WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | 
               WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
                   WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,PixelFormat.TRANSLUCENT);

windowParams.gravity = Gravity.TOP | Gravity.LEFT;
windowParams.x = 0;
windowParams.y = 0;

我得到了WindowManager

windowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);

添加浮动视图

windowManager.addView(MY_VIEW,windowParams);

其中MY_VIEW有一个OnTouchListener,在用户按下它后启动一个Activity.

解决方法

此问题的一种可能解决方法是将Home / Launcher intent过滤器添加到您尝试启动的活动.你可以通过添加它来做到这一点
<intent-filter>

    <!-- The following two intent-filters are the key to set homescreen -->
    <category android:name="android.intent.category.HOME" />   
    <category android:name="android.intent.category.DEFAULT" /> 


</intent-filter>

执行此操作时,用户基本上可以选择将应用程序用作主屏幕.无论何时开始活动,这都将导致无延迟.这是此问题最接近无根的解决方案.

更新

另一种可能的解决方案是具有中间辅助活动,该辅助活动又具有startActivity().这将绕过5秒的延迟.确保中间活动具有透明布局,以避免混淆用户.

原文链接:https://www.f2er.com/android/315048.html

猜你在找的Android相关文章