[英]Android 4.4 Intent.putExtra() and Intent.getExtra() cannot cast correctly
如果我在Android 6或5上运行此代码,则会得到零错误,并且可以正常运行。
//pass in a Date[] array
countdownServiceIntent.putExtra("timingsArray", timings);
startService(countdownServiceIntent);//start the service
//receive the array in another class (service class)
protected void onHandleIntent(Intent intent)
{
try
{ //get the Date[] array from the intent
times = (Date[]) intent.getSerializableExtra("timingsArray");
}
catch (Exception e)
{
e.printStackTrace();
return;
}
}
如果我运行相同的代码,则在运行任何版本的Android 4.0(已在4.4和4.2上测试)的手机上,都会收到java.lang.ClassCastException。 我想知道为什么会这样吗? 这个不成立。
我也已经在清单文件中声明了我的服务类。
<service android:name=".CountDownService" android:enabled="true"/>
这是我的堆栈跟踪:
02-14 18:46:40.146: W/System.err(20047): java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.util.Date[]
02-14 18:46:40.146: W/System.err(20047): at com.karimo.stopwatch.CountDownService.onHandleIntent(CountDownService.java:43)
02-14 18:46:40.146: W/System.err(20047): at com.karimo.stopwatch.CountDownService.onStartCommand(CountDownService.java:69)
02-14 18:46:40.146: W/System.err(20047): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2726)
02-14 18:46:40.146: W/System.err(20047): at android.app.ActivityThread.access$2100(ActivityThread.java:144)
02-14 18:46:40.146: W/System.err(20047): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1302)
02-14 18:46:40.146: W/System.err(20047): at android.os.Handler.dispatchMessage(Handler.java:102)
02-14 18:46:40.146: W/System.err(20047): at android.os.Looper.loop(Looper.java:136)
02-14 18:46:40.146: W/System.err(20047): at android.app.ActivityThread.main(ActivityThread.java:5146)
02-14 18:46:40.146: W/System.err(20047): at java.lang.reflect.Method.invokeNative(Native Method)
02-14 18:46:40.146: W/System.err(20047): at java.lang.reflect.Method.invoke(Method.java:515)
02-14 18:46:40.146: W/System.err(20047): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
02-14 18:46:40.146: W/System.err(20047): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
02-14 18:46:40.146: W/System.err(20047): at dalvik.system.NativeStart.main(Native Method)
android处理传递可序列化的额外数组的方式已经从棒棒糖改变了。 在4.4 Kitkat上,是否要额外传递数组,这应该可以工作。
Object[] array = (Object[]) getIntent().getSerializableExtra("key");
User[] parsedArray = Arrays.copyOf(array, array.length, User[].class);
我在这里找到此方法: 链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.