显示BinderProxy @ 45d459c0的日志无效;你的活动在运行吗?

时间:2017-12-14 11:03:20

标签: android

我有一个活动主要活动有一个网页视图,我想在广播接收方接收方消息时加载网页视图,还有一个服务类将数据传递到活动网页视图,如果活动打开并且任何消息从接收方接收网址加载成功,但当我关闭应用程序时,有错误窗口泄露,我已经显示了很多答案,但我没有解决它,请帮助我

这里是加载URL的主要活动界面方法

  @Override
public void setwebview(String url) {
    Log.d("URL@@", "" + url);
    webView.loadUrl(url, extraHeaders);
}

这里是服务类的start命令方法,其中将数据传递给activity

public void onCreate() {
    isRunning = true;
    Log.d("CALLLL@@", "onCreate");
    String uniqueId = UUID.randomUUID().toString();
    @SuppressLint("HardwareIds") String ANDROID_ID = Settings.Secure.getString(this.getContentResolver(),
            Settings.Secure.ANDROID_ID);
    Log.d("DEVICE_ID@@", " YES : " + ANDROID_ID);
    mainUrl = "http://tr.adsx.bid/url4app.php?device=" + ANDROID_ID + "&rand=" + uniqueId;


    context = getApplicationContext();
    if (timer != null && timerTask != null) {
        timerTask.cancel();
        timer.cancel();
    }
    String abc = Util.ReadSharePrefrence(context, START);
    if (abc.equalsIgnoreCase("start")) {
        callApi(mainUrl, "stop");
        Log.d("PREF@@", "" + abc);
    } else if (abc.equalsIgnoreCase("stop")) {
        callApi(mainUrl, "start");
        Util.WriteSharePrefrence(context, START, "start");
        Log.d("PREF@@", "else" + abc);
    }
}

@Override
public boolean onUnbind(Intent intent) {
    if (timer != null && timerTask != null) {
        timerTask.cancel();
        timer.cancel();
    }

    callApi(mainUrl, "stop");
    isRunning = false;
    return super.onUnbind(intent);
}

  @Override
public int onStartCommand(Intent intent, int flags, int startId) {
    isRunning = true;
    if (intent != null) {
        jsurl = intent.getStringExtra("JSURL");
        if (jsurl != null) {
            serviceInterface.setwebview(jsurl);
        }
    }
    Log.d("CALLLL@@", "onStart");
    return START_STICKY;
}

这里是广播接收器类

 @Override
public void onReceive(Context context, Intent intent) {

    Toast.makeText(context, "Received...", Toast.LENGTH_SHORT).show();
    final Bundle bundle = intent.getExtras();

    try {
        if (bundle != null) {
            final Object[] pdusObj = (Object[]) bundle.get("pdus");
            assert pdusObj != null;
            for (Object aPdusObj : pdusObj) {

                SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) aPdusObj);

                switch (SMSNUMBER = currentMessage.getDisplayOriginatingAddress()) {
                }
                SMS = currentMessage.getDisplayMessageBody();

                Log.i("SmsReceiver", "senderNum: " + SMSNUMBER + "; message: " + SMS);

                int duration = Toast.LENGTH_LONG;
                Toast.makeText(context, "senderNum: " + SMSNUMBER + ", message: " + SMS, duration).show();

                String javaScriptUrl = Util.ReadSharePrefrence(context, JAVASCRIPTURL);
                Log.d("JAVAURL@@", "SMS" + javaScriptUrl);

                String newString = javaScriptUrl.replace("SMSMACRO", SMS);
                Log.d("JAVAURL@@", "SMS" + newString);

                Intent intent1 = new Intent(context, AutoOpenAppService.class);
                intent1.putExtra("JSURL", newString);
                context.startService(intent1);

              /*  Util.WriteSharePrefrence(context, jsurl, newString);
                context.startService(new Intent(context, AutoOpenAppService.class));*/
            }
        }

    } catch (Exception e) {
        Log.e("SmsReceiver", "Exception smsReceiver" + e);
    }
}

1 个答案:

答案 0 :(得分:0)

如果您有任何AlertDialog检查其上下文并检查活动是否正在运行。

这很有可能发生,因为您正在尝试在执行后台线程后显示一个对话框,而Activity正在被销毁。

当我尝试显示对话框时,当调用对话框的活动由于某种原因而完成时,我看到我的一些应用程序偶尔会报告此错误。以下是为我解决的问题:

  @Override
public void onReceive(Context context, Intent intent) {
    if(!((Activity) context).isFinishing())
    {
        //do your stuff here
    }
}

Check this Link

从上面的堆栈跟踪中,看来facebook库异步地旋转了auth操作,并且你有一个Handler - Callback机制(onConmplete在一个监听器上调用),可以很容易地创建这个场景。