私は地元の通知で遊んでいました。私はBroadcastReceiverにデータを渡そうとしています。私は以下のコードがロリポップで動作することに気付きましたが、Nexus 6Pでは7.1では動作しません。PendingIntent(AlarmManager)からBroadcastReceiverにデータを渡す
これはどのように私のセットアップの意図や「余分な」データを追加です:それが何をするか、多くを起動しません
val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager
val wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "")
wl.acquire()
val data = intent.getParcelableExtra<MyData>("data")
問題をグーグル:BroadcastReceiverで
val am = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val alarmIntent = Intent(context, AlarmReceiver::class.java)
alarmIntent.putExtra("data", data)
val pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT)
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), (1000 * 60).toLong(), pendingIntent) // Millisec * Second * Minute
をこのポストは、このポストと、この正確な問題を述べているコメントです。しかし、私はどんな解決策も見ていないし、私が試したことが働いていないので、誰かが7.1で動く方法を考えているのだろうかと思っていたのですか?
編集:
このデータ・オブジェクトである:ログの
data class MyData(val accountNumber: String, val date: Date, val key: Int) : Parcelable {
companion object {
@JvmField val CREATOR: Parcelable.Creator<MyData> = object : Parcelable.Creator<MyData> {
override fun createFromParcel(source: Parcel): MyData = MyData(source)
override fun newArray(size: Int): Array< MyData?> = arrayOfNulls(size)
}
}
constructor(source: Parcel) : this(
source.readString(),
source.readSerializable() as Date,
source.readInt()
)
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeString(accountNumber)
dest.writeSerializable(date)
dest.writeSerializable(key)
}
}
抜粋val data = intent.getParcelableExtra<MyData>("data")
05から19 21を呼び出す:06:37.076 8150から8220 /com.wolfbane.example V/FA:アクティビティの再開、時間:864865 05-19 21:06:37.098 8150-8154/com.wolfbane.example I/art:部分コードキャッシュの収集を行うコード、コード= 45KB、データ= 46KB 05-19 21:06:37.098 8150-8154/com.wolfbane.example I/art: :37.098 8150-8154/com.wolfbane.example I/art:コードキャッシュ容量を256KBに増やす 05-19 21:06:37.102 8150-8154/com.wolfbane.example I/art:JITでコンパイルされたコードは61KB 05-19 21:06:37.102 8150-8154/com.wolfbane.example I/art:4MBを割り当てられたコンパイラコンパイルvoid android.widget.TextView(android.content.Context、android.util.AttributeSet、int、int) 05-19 21:06:37.151 8150-8154/com.wolfbane.example I/art:フルコードを実行するキャッシュコレクション、コード= 111KB、データ= 79KB 05-19 21:06:37.151 8150-8154/com.wolfbane.example I/art:ブロッキングGCの開始JitCodeCache 05-19 21:06:37.151 8150-8154/com.wolfbane.example I/art:コードキャッシュコレクション後、コード= 71KB、データ= 40KB 05-19 21:06:42.079 8150-8220/com.wolfbane 。例V/FA:サービスから切断されている非アクティブ 05-19 21:06:42.829 8150-8157/com.wolfbane.example I/art:ブロッキングGCインストルメンテーションの開始 05-19 21:07:04.396 8150- 8157/com.wolfbane.exampleのW /アート:すべてのスレッドを一時停止がかかった:私はそれの要旨は 'とバイトの配列を渡すことですIsaac Jordan
によってこれに対する解決策を見つけた
あなたは単に意図から 'ヌル'を受け取っていますか?また、渡すデータが 'Parcelable'ですか? –
はい、それは常にnullです。はい、パーセルブルです。 Lollipopでは問題なく動作します。 – WolfBane
データオブジェクトは 'Parcelable'ですか? –