Android W / ActivityThread:handleWindowVisibility:令牌android.os.BinderProxy没有活动

时间:2020-07-07 02:52:34

标签: android broadcastreceiver rx-java android-notifications alarmmanager

我使用带有BroadcastReceiver的导航UI收到警告。但是,一切正常,这只是一个警告,但恐怕最终会导致某些错误或崩溃。 这是发生的流程:

  1. 我使用AlarmManager设置了警报。通知意图是一个BroadcastReceiver。

  2. broadcastReceiver onReceive对DB进行了异步调用:

     @Override
     public void onReceive(Context context, Intent intent) {
         setSharedPreferences(context);
         final PendingResult pendingResult = goAsync();
         fetchDataFromDB(context, pendingResult);
     }
    
  3. fetchDataFromDB使用RxJava:

    appDatabase.dataDao().getData(id)
             .subscribeOn(Schedulers.io())
             .observeOn(AndroidSchedulers.mainThread())
             .subscribe(
                     data -> onNext(data, context.getApplicationContext(), pendingResult),
                     throwable -> onError(throwable, pendingResult)
             );
    

我想使用JobService,但它适用于API> 21,并且该调用实际上并不需要很长时间,因此我只是将goAsync与RxJava一起使用。

  1. onNext基本上会创建一个具有待定意图的通知:

         Intent notificationIntent = new Intent(context.getApplicationContext(), NotificationActivity.class);
         pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), Constants.NOTIFICATION_ID, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    
  2. 到目前为止,一切都很好,我收到了通知,当我点击通知以打开NotificationActivity时,我得到了警告:

    W / ActivityThread:handleWindowVisibility:令牌android.os.BinderProxy没有活动

  3. NotificationActivity(通知活动),应根据通知的待定​​意图打开,可以正确打开,没有错误或崩溃。

作为一个额外的信息,该NotificationActivity是除主Activity外唯一的“额外”活动,因为我正在使用单一活动方法进行导航。由于NotificationActivity不是正常流程的一部分,因此这是清单上的配置:

“ android:launchMode =” singleInstance“

不确定这是否也是原因。

0 个答案:

没有答案