簡體   English   中英

連接狀態更改時,BroadcastReceiver使Android應用程序崩潰

[英]BroadcastReceiver crashes Android application when connection state changes

我有以下代碼:

    private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
    /*
    boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
    String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
    boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);

    NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
    NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
    */
    // do application-specific task(s) based on the current network state, such 
    // as enabling queuing of HTTP requests when currentNetworkInfo is connected etc.
//  Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();
    //      if(!check3G()||!checkWifi())
        updateUI();
    }
    };
       /*
        * method to be invoked to register the receiver
        */
       private void registerReceivers() {    
           registerReceiver(mConnReceiver, 
               new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
       }

然后像這樣在oncreate方法中注冊接收器:

   public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_menu);
    registerReceivers();
    /* Code omitted*/
    }

而在毀滅中

    public void onDestroy(){
     unregisterReceiver(mConnReceiver);
    super.onDestroy();      
}

現在,只要連接狀態發生變化,我都想調用updateUI();。

但是,當確實發生更改時,將調用該函數,但應用程序將崩潰。 我不確定自己在做什么錯,任何建議都會有所幫助。

謝謝

編輯:

LogCat日志:

09-05 04:04:56.968: I/ActivityManager(246): Start proc edu.ucla.pam for activity edu.ucla.pam/.LoginScreenActivity: pid=7158 uid=10008 gids={3003, 3002, 3001, 1015, 1028}
09-05 04:04:57.757: I/ActivityManager(246): Displayed edu.ucla.pam/.LoginScreenActivity: +856ms
09-05 04:05:23.347: I/ActivityManager(246): START {cmp=edu.ucla.pam/.MenuMainActivity (has extras) u=0} from pid 7158
09-05 04:05:23.574: I/ActivityManager(246): Displayed edu.ucla.pam/.MenuMainActivity: +173ms
09-05 04:05:37.386: E/AndroidRuntime(7158): java.lang.RuntimeException: Unable to instantiate receiver edu.ucla.pam.receiver.ConnectivityReceiver: java.lang.ClassNotFoundException: edu.ucla.pam.receiver.ConnectivityReceiver
09-05 04:05:37.386: E/AndroidRuntime(7158): Caused by: java.lang.ClassNotFoundException: edu.ucla.pam.receiver.ConnectivityReceiver
09-05 04:05:37.398: W/ActivityManager(246):   Force finishing activity edu.ucla.pam/.MenuMainActivity
09-05 04:05:37.925: W/ActivityManager(246): Activity pause timeout for ActivityRecord{4225a750 edu.ucla.pam/.MenuMainActivity}
09-05 04:05:39.296: I/ActivityManager(246): Process edu.ucla.pam (pid 7158) has died.
09-05 04:05:39.296: I/WindowState(246): WIN DEATH: Window{4221fec0 edu.ucla.pam/edu.ucla.pam.LoginScreenActivity paused=false}
09-05 04:05:39.300: I/WindowState(246): WIN DEATH: Window{4250fe58 edu.ucla.pam/edu.ucla.pam.MenuMainActivity paused=false}
09-05 04:05:39.304: W/ActivityManager(246): Force removing ActivityRecord{42153568 edu.ucla.pam/.LoginScreenActivity}: app died, no saved state
09-05 04:05:56.227: I/ActivityManager(246): Start proc edu.ucla.pam for broadcast edu.ucla.pam/.receiver.ConnectivityReceiver: pid=7325 uid=10008 gids={3003, 3002, 3001, 1015, 1028}
09-05 04:05:56.398: E/AndroidRuntime(7325): java.lang.RuntimeException: Unable to instantiate receiver edu.ucla.pam.receiver.ConnectivityReceiver: java.lang.ClassNotFoundException: edu.ucla.pam.receiver.ConnectivityReceiver
09-05 04:05:56.398: E/AndroidRuntime(7325): Caused by: java.lang.ClassNotFoundException: edu.ucla.pam.receiver.ConnectivityReceiver
09-05 04:05:56.398: W/ActivityManager(246): Process edu.ucla.pam has crashed too many times: killing!
09-05 04:05:56.398: I/ActivityManager(246): Killing proc 7325:edu.ucla.pam/u0a8: crash

事實證明,問題是一些舊代碼。 在清單中注冊了一個附加的ConnectivityReceiver,它從未實例化,導致應用程序崩潰。

我將很快發布舊代碼。

感謝你的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM