2017-11-19 10 views
0

Broadcastreceiverにオブジェクトを渡そうとしています。 このメカニズムは、データを渡すことなく正常に機能します。しかし、私がオブジェクトを渡そうとすると、プログラップは崩壊する。Braodcast Receiverでクラッシュするコード

これはコードである:

public void SetFutureStartTime(int startHour, int startMin) 
{ 
    Context context = this; 

    m_alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context, AlarmReceiver_BoilerOn.class); 

    Bundle args = new Bundle(); 
    args.putSerializable("tcpClientObj",(Serializable)m_TcpClient); 
    intent.putExtra("DATA",args); 

    m_alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); // --------------> The code crushes here 

    // Set the alarm to start at 21:32 PM 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, startHour); 
    calendar.set(Calendar.MINUTE, startMin); 

    m_alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), m_alarmIntent); 
} 

これはBroadcastreceiver実装である:

public class AlarmReceiver_BoilerOn extends BroadcastReceiver{ 
@Override 
public void onReceive(Context context, Intent intent) { 

    Bundle args = intent.getBundleExtra("DATA"); 
    final TcpClient tcpClient = (TcpClient) args.getSerializable("tcpClientObj"); 
} 
} 

これは、エラーログである:

11-19 19:35:59.553: D/AndroidRuntime(2389): Shutting down VM 
11-19 19:35:59.553: D/AndroidRuntime(2389): --------- beginning of crash 
11-19 19:35:59.571: E/AndroidRuntime(2389): FATAL EXCEPTION: main 
11-19 19:35:59.571: E/AndroidRuntime(2389): Process: boiler.boiler, PID: 2389 
11-19 19:35:59.571: E/AndroidRuntime(2389): java.lang.RuntimeException: Parcelable encountered IOException writing 

シリアライズオブジェクト(名前=ボイラー.boiler.TcpClient) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os.Parcel.writeSerializable(Parcel.java:1526) 11-19 19:35:59.571:E/AndroidRuntime(2389):at android.os.Parcel.writeValue(Parcel.java:1474) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os.Parcel.writeArrayMapInternal(Parcel.java:723) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1408) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os Bundle.writeToParcel(Bundle.java:1133) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os.Parcel.writeBundle(Parcel.java:763) 11-19 19:35: 59.571:E/AndroidRuntime(2389):android.os.Parcel.writeValue(Parcel.java:1392) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os.Parcel.wriあなたのAndroid用アプリケーション/ツールの魅力を最大限に引き出すためには、 E/AndroidRuntime(2389):android.os.Bundle.writeToParcel(Bundle.java:1133) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os.Parcel.writeBundle(Parcel。 Java:763) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.content.Intent.writeToParcel(Intent.java:8655) 11-19 19:35:59.571:E/AndroidRuntime 2389):android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3052) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.app.Instrumentation.execStartActivity(Instrumentation.java:1518) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.app.Activity.startActivityFo rResult(Activity.java:4224) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) 11-19 19: 35:59.571:E/AndroidRuntime(2389):android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) 11-19 19:35:59.571:E/AndroidRuntime(2389):android。 app.Activity.startActivityForResult(Activity.java:4183) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859) 11 -19 19:35:59.571:E/AndroidRuntime(2389):android.app.Activity.startActivity(Activity.java:4507) 11-19 19:35:59.571:E/AndroidRuntime(2389):android。 app.Activity.startActivity(Activity.java:4475) 11-19 19:35:59.571:E/AndroidRuntime(2389):boiler.boiler.MainActivity.SetFutureStartTime(MainActivity.java:414) 11-19 19:35:59.571:E/AndroidRuntime(2389):at boiler.boiler。 MainActivity $ 2 $ 3.onClick(MainActivity.java:185) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.view.View.performClick(View.java:5610) 11-19 19: 35:59.571:E/AndroidRuntime(2389):android.view.View $ PerformClick.run(View.java:22265) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os Handler.handleCallback(ハンドラ。java:751) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.os.Handler.dispatchMessage(Handler.java:95) 11-19 19:35:59.571:E/AndroidRuntime 2389):android.os.Looper.loop(Looper.java:154) 11-19 19:35:59.571:E/AndroidRuntime(2389):android.app.ActivityThread.main(ActivityThread.java:6077) 11-19 19:35:59.571:E/AndroidRuntime(2389):java.lang.reflect.Method.invoke(ネイティブメソッド) 11-19 19:35:59.571:E/AndroidRuntime(2389):at com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:866) 11-19 19:35:59.571:E/AndroidRuntime(2389):com.android.internal.os.ZygoteInit.main(ZygoteInit .java:756) 11-19 19:35:59.571:E/AndroidRuntime(2389):原因:java.io.NotSerializableException: boiler.boiler.Mainアクティビティ$ ConnectTask $ 1 11-19 19:35:59.571:E/AndroidRuntime(2389):java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1224) 11-19 19:35:59.571:E/AndroidRuntime 2389):java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1584) 11-19 19:35:59.571:E/AndroidRuntime(2389):java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1549) 11-19 19:35:59.571:E/AndroidRuntime(2389):java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1472) 11-19 19:35:59.571:E/AndroidRuntime(2389):at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1218) 11-19 19:35:59.571:E/AndroidRuntime(2389):java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346) 11-19 19:35:59.571:E/AndroidR (2389):android.os.Parcel.writeSerializable(Parcel.java:1521) 11-19 19:35:59.571:E/AndroidRuntime(2389):...もっと見る 11-19 19:35: 59.590:W/ActivityManager(1590):強制終了アクティビティboiler.boiler/.MainActivity

何が欠けていますか?

ありがとうございました。

答えて

0

java.lang.RuntimeException:

args.putSerializable("tcpClientObj",(Serializable)m_TcpClient); 

それはおそらくできないをキャストする:ParcelableはにIOExceptionが

それができない

あなたの問題はここにあるキャストすると言う

を書い遭遇しましたm_TcpClientSerializableオブジェクト

+0

それでは、 'm_TcpClient'をどのようにシリアル化しますか? – user1673206

+0

m_TcpClientとは何ですか? –

関連する問題