Java AudioManager版本的NullPointerException
当我从Android Studio在Debug中运行代码时,我的应用程序运行良好,但当我创建APK并将其安装在设备上并启动我的应用程序时,应用程序会出现NullPointerException错误并被终止(使用Android Debug Monitor)。代码如下:Java AudioManager版本的NullPointerException,java,android,service,nullpointerexception,android-audiomanager,Java,Android,Service,Nullpointerexception,Android Audiomanager,当我从Android Studio在Debug中运行代码时,我的应用程序运行良好,但当我创建APK并将其安装在设备上并启动我的应用程序时,应用程序会出现NullPointerException错误并被终止(使用Android Debug Monitor)。代码如下: public class MusicService extends IntentService { boolean INTERNET_CONNECTION = false; boolean COMMAND_DOW
public class MusicService extends IntentService {
boolean INTERNET_CONNECTION = false;
boolean COMMAND_DOWNALOAD_SDCARD = false;
String TABLE_NAME = "";
String COMMAND_ARGUMENT = "";
// Here throw sometimes the error - Line 42
AudioManager audio;
MediaPlayer mp = new MediaPlayer();
long TIME_ELAPSED = 0;
long TIME_STARTED = 0;
boolean ALIVE = true;
long SLEEP_TIME = 5000;
String SERVER_URL = "http://xxx.xxx";
public MusicService() {
super("Service");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.d("SERVICE", "STARTED");
initialize();
initializeTimer();
while (ALIVE) {
...
}
}
private void initialize() {
// Get phone number set the table name
TABLE_NAME = "t" + getPhoneNumber();
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
// Wait for internet connection
INTERNET_CONNECTION = waitInternetConnection();
Log.d("INITIALIZE", "COMPLETED");
}
...
}
启动完成后,我启动我的应用程序。尝试运行几次后,我在第42行出现错误,我将该行更改为:
AudioManager audio = null;
到
但是仍然会得到错误,但是现在不再显示任何行。这两者之间没有区别:
AudioManager audio=null代码>和AudioManager音频代码>
将行从显式赋值null
更改为对象不会改变任何功能;这意味着audio
现在隐式默认为null
显然,getSystemService()
的功能有所不同,这取决于您是在调试环境中还是在生产环境中。要想知道出了什么问题,就去做那个服务。我们这里没有足够的信息为您调试它
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
如果该行为42,则不应抛出错误,除非AudioManager中的某个静态部分出现故障。我会重新编译,然后再试一次。
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);