连接状态更改时BroadcastReceiver使Android应用程序崩溃
我有以下代码:连接状态更改时BroadcastReceiver使Android应用程序崩溃,android,crash,broadcastreceiver,Android,Crash,Broadcastreceiver,我有以下代码: private BroadcastReceiver mConnReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { /* boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTI
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*/
}
在ondestroy作为
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
原来问题是一些遗留代码。清单中还注册了一个从未实例化的ConnectionTyReceiver,导致应用程序崩溃 我将很快发布遗留代码
感谢您的帮助。原来问题是一些遗留代码。清单中还注册了一个从未实例化的ConnectionTyReceiver,导致应用程序崩溃 我将很快发布遗留代码
感谢您的帮助。请发布stacktrace和updateUI方法的内容。我认为updateUI方法中没有问题,因为它也会在我的测试土司上崩溃。尽管如此,我还是会发布代码和堆栈跟踪。@AviC:ConnectivityReceiver.class在哪里??确保您已将其正确注册到清单中或添加到正确的包中。我认为,如果您以编程方式添加了broadcastreceiver,您就不必将其添加到清单中。这可能是问题所在-你能帮我修改代码吗?我必须这样做才能确保它按预期工作?请发布stacktrace和updateUI方法的内容。我不认为updateUI方法存在问题,因为它也会在我的测试土司上崩溃。尽管如此,我还是会发布代码和堆栈跟踪。@AviC:ConnectivityReceiver.class在哪里??确保您已将其正确注册到清单中或添加到正确的包中。我认为,如果您以编程方式添加了broadcastreceiver,您就不必将其添加到清单中。这可能是个问题——你能帮我修改代码吗?我必须这样做才能确保它按预期工作?