Java 在调试模式下使用改装回调时应用程序崩溃

Java 在调试模式下使用改装回调时应用程序崩溃,java,android,android-studio,callback,retrofit,Java,Android,Android Studio,Callback,Retrofit,我的应用程序在调试时崩溃,但在运行模式下运行良好。我查看了堆栈跟踪,我知道这是由于回调代码造成的 你知道为什么应用程序只在调试模式下崩溃吗 以下是片段: public class MoviePosterFragment extends Fragment { private void updateMoviePosters(final RecyclerView rv) { MovieAPI mMovieAPI = NetworkAPI.createService(Movie

我的应用程序在调试时崩溃,但在运行模式下运行良好。我查看了堆栈跟踪,我知道这是由于回调代码造成的

你知道为什么应用程序只在调试模式下崩溃吗

以下是片段:

public class MoviePosterFragment extends Fragment {

    private void updateMoviePosters(final RecyclerView rv) {
        MovieAPI mMovieAPI = NetworkAPI.createService(MovieAPI.class);
        Callback<movieGeneral> callback = new Callback<movieGeneral>()
        {
            @Override
            public void success(movieGeneral mMovieGeneral, Response response) {
                updateMovieGrid(rv, mMovieGeneral);
                Toast.makeText(getActivity(), "callback success!",
                        Toast.LENGTH_LONG).show();
            }
            @Override
            public void failure(RetrofitError error) {
                int a =0;
                //show error message
                //set adapter to null
                Toast.makeText(getActivity(), "fail!",
                        Toast.LENGTH_LONG).show();
            }
        };
        mMovieAPI.fetchPopMovies(MOST_POPULAR, API_KEY, callback);
    }
}
公共类MoviePosterFragment扩展片段{
私人作废更新海报(最终回收视图rv){
MovieAPI mMovieAPI=NetworkAPI.createService(MovieAPI.class);
Callback Callback=new Callback()
{
@凌驾
公开无效成功(电影概述,回应){
updateMovieGrid(rv、mMovieGeneral);
Toast.makeText(getActivity(),“回调成功!”,
Toast.LENGTH_LONG).show();
}
@凌驾
公共无效失败(错误){
int a=0;
//显示错误消息
//将适配器设置为空
Toast.makeText(getActivity(),“fail!”,
Toast.LENGTH_LONG).show();
}
};
fetchPopMovies(最流行的,API键,回调);
}
}
网络API:

public class NetworkAPI {

    //Volatile keyword ensures that multiple threads handle the     unique/instance correctly
    private volatile static NetworkAPI uniqueInstance;

    public static final String POP_MOVIES_URL = "http://api.themoviedb.org/3/discover/movie?";
    private final String API_KEY = "xxxxxxxxxxxxxxxxxxxxxx";

    final String SORT_PARAM = "sort_by";
    final String PAGE = "page";
    final String KEY = "api_key";

    private static RestAdapter.Builder builder = new RestAdapter.Builder()
            .setEndpoint(POP_MOVIES_URL) //API endpoint
            .setClient(new OkClient(new OkHttpClient())); //setClient: the HTTP client used for requests

    public static <S> S createService(Class<S> serviceClass) {
        RestAdapter adapter = builder.build();
        return adapter.create(serviceClass);
    }
}
公共类NetworkAPI{
//Volatile关键字确保多个线程正确处理唯一/实例
私有易失性静态网络API uniqueInstance;
公共静态最终字符串POP_MOVIES_URL=”http://api.themoviedb.org/3/discover/movie?";
私有最终字符串API_KEY=“xxxxxxxxxxxxxxxxxxxxxx”;
最终字符串SORT_PARAM=“SORT_by”;
最终字符串PAGE=“PAGE”;
最终字符串键=“api_键”;
私有静态RestAdapter.Builder=new RestAdapter.Builder()
.setEndpoint(POP\u MOVIES\u URL)//API端点
.setClient(新的OkClient(新的OkHttpClient());//setClient:用于请求的HTTP客户端
公共静态S createService(类serviceClass){
RestAdapter adapter=builder.build();
返回adapter.create(serviceClass);
}
}
接口:

public interface MovieAPI
    {

    @GET("/3/discover/movie")
    void fetchPopMovies
        (
        //@Query: specifies the query key name with the value of the annotated parameter.
        @Query("sort_by") String SORT_PARAM,
        @Query("api_key") String API_KEY,
        retrofit.Callback<movieGeneral> cb //last parameter must be a Callback so API call can run asynchronously
        );
    }
公共接口电影API
{
@获取(“/3/discover/movie”)
虚空电影
(
//@查询:指定带有注释参数值的查询键名称。
@查询(“排序依据”)字符串排序参数,
@查询(“api_键”)字符串api_键,
Callback cb//最后一个参数必须是回调,以便API调用可以异步运行
);
}
堆栈跟踪:

02-26 00:34:32.544 1109-1109/? E/SELinux: [DEBUG] get_category: variable seinfo: default sensitivity: NULL, cateogry: NULL
02-26 00:34:44.145 1109-1116/example.user.popmovie E/art: art::mirror::Object* art::StackVisitor::GetThisObject() const unimplemented Failed to determine this object of abstract or proxy method: void example.user.popmovie.utils.MovieAPI.fetchPopMovies(java.lang.String, java.lang.String, retrofit.Callback)  
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI GetStringUTFChars called with pending exception 'android.view.InflateException' thrown in android.view.View android.view.LayoutInflater.inflate(org.xmlpull.v1.XmlPullParser, android.view.ViewGroup, boolean):548  
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]     in call to GetStringUTFChars  
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]     from int android.util.Log.println_native(int, int, java.lang.String, java.lang.String)  
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65] "main" prio=5 tid=1 Runnable
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   | group="main" sCount=0 dsCount=0 obj=0x8759bef0 self=0xb4f07800
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   | sysTid=1109 nice=0 cgrp=apps sched=0/0 handle=0xb6f67ec8
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   | state=R schedstat=( 0 0 0 ) utm=30 stm=10 core=2 HZ=100
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   | stack=0xbe4f4000-0xbe4f6000 stackSize=8MB
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   | held mutexes= "mutator lock"(shared held)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #00 pc 00004640  /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+23)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #01 pc 00002e8d  /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+8)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #02 pc 002481d1  /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+68)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #03 pc 0022cf0b  /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+146)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #04 pc 000b17ab  /system/lib/libart.so (art::JniAbort(char const*, char const*)+582)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #05 pc 000b1ee5  /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+60)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #06 pc 000b4ff5  /system/lib/libart.so (art::ScopedCheck::ScopedCheck(_JNIEnv*, int, char const*)+1284)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #07 pc 000bce59  /system/lib/libart.so (art::CheckJNI::GetStringUTFChars(_JNIEnv*, _jstring*, unsigned char*)+24)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #08 pc 00062b75  /system/lib/libandroid_runtime.so (???)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #09 pc 00089511  /system/lib/libandroid_runtime.so (???)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   native: #10 pc 0166fdc3  /system/framework/arm/boot.oat (Java_android_util_Log_println_1native__IILjava_lang_String_2Ljava_lang_String_2+146)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.util.Log.println_native(Native method)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.util.Log.d(Log.java:164)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.app.Activity.performCreate(Activity.java:6291)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.app.ActivityThread.access$900(ActivityThread.java:177)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1450)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.os.Handler.dispatchMessage(Handler.java:102)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.os.Looper.loop(Looper.java:147)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.app.ActivityThread.main(ActivityThread.java:5953)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at java.lang.reflect.Method.invoke!(Native method)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at java.lang.reflect.Method.invoke(Method.java:372)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]   at android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
02-26 00:34:44.315 1109-1109/example.user.popmovie A/art: sart/runtime/check_jni.cc:65]
02-26 00:34:44.515 1109-1109/example.user.popmovie A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x40 in tid 1109 (e.user.popmovie)
02-26 00:34:32.544 1109-1109/?E/SELinux:[调试]获取类别:变量seinfo:默认灵敏度:NULL,类别:NULL
02-26 00:34:44.145 1109-1116/example.user.popmoine E/art:art::mirror::Object*art::StackVisitor::GetThisObject()const未实现无法确定抽象或代理方法的此对象:void example.user.popmoine.utils.MovieAPI.fetchpopmoies(java.lang.String,java.lang.String,inversion.Callback)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]jni在应用程序中检测到错误:调用jni GetStringUTFChars时,在android.view.view.android.view.view.LayoutInflater.inflate中抛出了挂起的异常“android.view.InflateException”(org.xmlpull.v1.xmlparser,android.view.ViewGroup,boolean):548
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]来自int-android.util.Log.println_native(int,int,java.lang.String,java.lang.String)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]“main”prio=5 tid=1 Runnable
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]| group=“main”scont=0 dsCount=0 obj=0x8759bef0 self=0xb4f07800
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]| sysTid=1109 nice=0 cgrp=apps sched=0/0 handle=0xb6f67ec8
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]| state=R schedstat=(0 0 0)utm=30 stm=10 core=2 HZ=100
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]| stack=0xbe4f4000-0xbe4f6000 stackSize=8MB
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]|保持互斥体=“mutator lock”(共享保持)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]本机:#00 pc 00004640/system/lib/libbacktrace_libc++.so(UnwindCurrent::Unwind(unsigned int,ucontext*)+23)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]本机:#01 pc 00002e8d/system/lib/libbacktrace_libc++.so(Backtrace::Unwind(unsigned int,ucontext*)+8)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]本机:#02 pc 002481d1/system/lib/libart.so(art::DumpNativeStack(std:u 1::basic_ostream&,int,char const*,art::mirror::ArtMethod*)+68)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]native:#03 pc 0022cf0b/system/lib/libart.so(art::Thread::Dump(std:u 1::basic_ostream&)const+146)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]本机:#04 pc 000b17ab/system/lib/libart.so(art::jnibort(char const*,char const*)+582)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]本机:#05 pc 000b1ee5/system/lib/libart.so(art::JniAbortF(char const*,char const*,…)+60)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]本机:#06 pc 000b4ff5/system/lib/libart.so(art::ScopedCheck::ScopedCheck(_JNIEnv*,int,char const*)+1284)
02-26 00:34:44.315 1109-1109/example.user.popmoine A/art:sart/runtime/check_jni.cc:65]本机:#07 pc 000bce59/system/lib/libart.so(艺术::CheckJ