Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AudioManager版本的NullPointerException_Java_Android_Service_Nullpointerexception_Android Audiomanager - Fatal编程技术网

Java AudioManager版本的NullPointerException

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

当我从Android Studio在Debug中运行代码时,我的应用程序运行良好,但当我创建APK并将其安装在设备上并启动我的应用程序时,应用程序会出现NullPointerException错误并被终止(使用Android Debug Monitor)。代码如下:

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);