我最近做了一些更改,虽然经过大量测试后我无法在我的任何设备上重现此崩溃,但用户之间却经常发生这种情况。它是不同的制造商,通常是Android 6.0.1,但我看过一个6.0.0和4.4.4。我不知道它正在发生什么背景。
Fatal Exception: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.xxx.xxxxx/com.xxx.xxxxx.importfile.HardPathService}: java.lang.ClassCastException: com.xxx.xxxxx.importfile.HardPathService cannot be cast to android.app.Activity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3132)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5472)
at android.app.ActivityThread.access$1200(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1827)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by java.lang.ClassCastException: com.xxx.xxxxx.importfile.HardPathService cannot be cast to android.app.Activity
at android.app.Instrumentation.newActivity(Instrumentation.java:1096)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3122)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5472)
at android.app.ActivityThread.access$1200(ActivityThread.java:229)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1827)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
服务声明如下:
<service
android:name=".importfile.HardPathService"
android:exported="true"
android:process=":pathservice"/>
我现在意识到它不需要导出(它需要是一个单独的进程),但这是崩溃时声明它的方式。
我开始崩溃时所做的更改:
现在,服务从onActivityResult
返回的重新调整的意图启动,该意图方便地设置了数据和剪辑数据。过去常常以新的意图开始。它看起来像这样:
requestedIntent.setClass(getActivity(),HardPathService.class); 。getActivity()startService(requestedIntent);
我认为这是再次使用意图的某种方式,但我不知道为什么它有时会失败,所以在更改它之前我宁愿做出解释。
答案 0 :(得分:0)
只需将数据和clipData复制到新意图,即可完全消失崩溃。所以,不要重复使用你的意图。
Intent startIntent = new Intent(getActivity(), HardPathService.class);
startIntent.setData(requestedIntent.getData());
startIntent.setClipData(requestedIntent.getClipData());
getActivity().startService(startIntent);