我有一个可穿戴应用程序,其中 WearMessageListenerService 的 onMessageReceived() 启动了一个 Activity ,一切都在正常运行。
但我观察到,在调用 startActivity() 和调用 Activity 的 onCreate() 之间,偶尔会有相当大的延迟,大约 10 秒。
我的代码中没有发生任何可能导致此问题的复杂情况 - 它是一个非常非常简单的小程序,我只有这两个类 - 监听器服务和 Activity 。没有线程,没有后台处理,没有同步调用,没有阻塞,没有类似的东西。
这是来自 WearableListenerService 的一些代码:
public void onMessageReceived(MessageEvent messageEvent)
{
Log.i(TAG, "WearableListenerService onMessageReceived() with: " + messageEvent.getPath());
Intent = ....
....
Log.i(TAG, "Going to start activity");
startActivity(intent);
这是 Activity 的 onCreate:
protected void onCreate(Bundle savedInstanceState)
{
Log.i(TAG, "***************** ACTIVITY onCreate() ******************");
...
当我观察到延迟发生时,我可以看到这样的日志(为简洁起见缩写)
03-25 12:57:35.565 WearableListenerService onMessageReceived() with: CALL_STATE_RINGING
03-25 12:57:35.565 Going to start activity
03-25 12:57:43.576 WearMessageListenerService onDestroy()
03-25 12:57:45.348 *************** ACTIVITY onCreate() **************
请注意在创建 Activity 之前此日志中有 8 秒的间隔。
有没有人在一般 Activity 中观察到这样的延迟,或者这可能是可穿戴设备特有的? (在我看来,可穿戴功能似乎有点古怪,我似乎经常观察到这样的事情)。
我能做些什么来找出为什么有时会有延迟,并消除它。
最佳答案
您是否尝试过在开始 Activity 之前使用唤醒锁?您的设备可以在 Activity 开始前进入休眠状态。
我认为这里最好的方法是使用 acqure(long timeout)
自动释放锁的方法。
关于android - 偶尔延迟 10 秒开始 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29289700/