发行版的AudioManager NullPointerException

时间:2014-02-04 19:46:33

标签: 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_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;

但仍然得到错误,但现在不再显示该行。

1 个答案:

答案 0 :(得分:0)

这些之间没有区别:AudioManager audio = null;AudioManager audio;

将行显式分配给null更改为对象并不会改变任何功能;这意味着audio现在隐含地默认为null

显然,getSystemService()的作用有所不同,具体取决于您是否处于调试环境与生产环境之间。要找出问题所在,请进入该服务。我们这里没有足够的信息为您调试。

audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);