我正在尝试在Android中测试我的应用程序的扩展文件功能。但是,下载不起作用。我使用SampleDownloaderActivity.java代码来显示下载进度。 但是,屏幕上没有可见的下载进度。我已在http://developer.android.com/google/play/expansion-files.html
上提供的文档中包含了所需的代码我必须测试app以进行扩展文件下载。
当应用程序启动时,可以看到从SampleDownloaderActivity.java创建的UI,点击“暂停下载”按钮会使应用程序崩溃,从而导致空指针异常。
以下是应用崩溃的代码
mPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mStatePaused)
{
mRemoteService.requestContinueDownload();
}
else
{
mRemoteService.requestPauseDownload();
}
setButtonPausedState(!mStatePaused);
}
});
}
以下是我得到的崩溃日志: -
07-17 22:26:21.998: E/AndroidRuntime(19293): java.lang.NullPointerException
07-17 22:26:21.998: E/AndroidRuntime(19293): at com.lht.egoscue.SampleDownloaderActivity$2.onClick(SampleDownloaderActivity.java:360)
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.view.View.performClick(View.java:4084)
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.view.View$PerformClick.run(View.java:16966)
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.os.Handler.handleCallback(Handler.java:615)
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.os.Handler.dispatchMessage(Handler.java:92)
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.os.Looper.loop(Looper.java:137)
07-17 22:26:21.998: E/AndroidRuntime(19293): at android.app.ActivityThread.main(ActivityThread.java:4745)
07-17 22:26:21.998: E/AndroidRuntime(19293): at java.lang.reflect.Method.invokeNative(Native Method)
07-17 22:26:21.998: E/AndroidRuntime(19293): at java.lang.reflect.Method.invoke(Method.java:511)
07-17 22:26:21.998: E/AndroidRuntime(19293): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-17 22:26:21.998: E/AndroidRuntime(19293): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-17 22:26:21.998: E/AndroidRuntime(19293): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
mRemoteService
是否为空?尝试用以下代码替换您的代码:
mPauseButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mRemoteService != NULL) {
if (mStatePaused)
{
mRemoteService.requestContinueDownload();
}
else
{
mRemoteService.requestPauseDownload();
}
setButtonPausedState(!mStatePaused);
}
else { Log.wtf("SampleDownloaderActivity", "mRemoteService is NULL!!"); }
}
});
}
您知道onServiceConnected
是否真的被调用?引用你的文档:
onServiceConnected(Messenger m):
在您的活动中实例化IStub后,您将收到对此方法的调用,该方法会传递一个 与您的实例连接的Messenger对象 DownloaderService。向服务发送请求,例如暂停 并恢复下载,你必须打电话 DownloaderServiceMarshaller.CreateProxy()接收 IDownloaderService接口连接到服务。
那么,你有没有:
1.在你的班级中实现了IDownloaderClient
接口?
2.您是否在活动中实例化了IStub