質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

1173閲覧

androidのWorkManagerで、ClassCastExceptionが時折発生する

tamago83

総合スコア60

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2020/07/08 08:32

編集2020/07/14 20:54

前提・実現したいこと

androidxのWorkerManagerを使用し、バックグラウンドで通信を行うアプリを作成しています。
公開したアプリで、androidのバージョンに関係なく、常に発生しておらず、時折発生しております。
※自端末では発生しておらず、firebase Crashlyticsなどでは大量に発生が見えます。

発生している問題・エラーメッセージ

message

1Fatal Exception: java.lang.ClassCastException 2class jp.example.DataCollectWorker cannot be cast to androidx.work.ListenableWorker 3java.lang.Class.asSubclass

trace

1java.lang.Class.asSubclass (Class.java:2477) 2androidx.work.WorkerFactory.createWorkerWithDefaultFallback (WorkerFactory.java:88) 3androidx.work.impl.WorkerWrapper.runWorker (WorkerWrapper.java:242) 4androidx.work.impl.WorkerWrapper.run (WorkerWrapper.java:136) 5androidx.work.impl.utils.SerialExecutor$Task.run (SerialExecutor.java:91) 6java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1167) 7java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) 8java.lang.Thread.run (Thread.java:764)

該当のソースコード

実際にどこで発生しているか不明ですので、WorkerManagerを呼び出している部分のみ抜粋しています。

実行

kotlin

1class Activity : :AppCompatActivity(){ 2 override fun onCreate(savedInstanceState: Bundle?) { 3 super.onCreate(savedInstanceState) 4 5 WorkManager.getInstance(application) 6 .getWorkInfoByIdLiveData(DataCollectWorker.allRequest()) 7 } 8} 9 .getWorkInfoByIdLiveData(DataCollectWorker.allRequest())

呼び出し用

kotlin

1object DataCollectWorker{ 2 fun allRequest(): UUID { 3 Util.log.d("allRequest") 4 val request: OneTimeWorkRequest = OneTimeWorkRequestBuilder<DataAllRequestUseCase>() 5 .build() 6 7 WorkManager 8 .getInstance(applicationContext) 9 .beginUniqueWork( 10 "ALL" 11 , ExistingWorkPolicy.REPLACE 12 , request 13 ).enqueue() 14 15 return request.id 16 } 17 18 fun singleRequest(url: String): UUID { 19 Util.log.d("newRequest") 20 val request: OneTimeWorkRequest = OneTimeWorkRequestBuilder<DataSingleRequestUseCase>() 21 .addTag(TAG_ONETIME) 22 .setInputData( 23 workDataOf( 24 DATA_URL to url 25 ) 26 ).build() 27 28 WorkManager 29 .getInstance(applicationContext) 30 .beginUniqueWork( 31 "ONE_TIME" 32 , ExistingWorkPolicy.REPLACE 33 , request 34 ).enqueue() 35 36 return request.id 37 } 38}

動作しているところ

kotlin

1class DataAllRequestUseCase(appContext: Context, params: WorkerParameters) : CoroutineWorker(appContext, params) { 2 override suspend fun doWork(): Result = withContext(Dispatchers.IO) { 3 // いろいろな処理 4 5 return@withContext Result.success() 6 } 7 8} 9 10class DataSingleRequestUseCase(appContext: Context, params: WorkerParameters) : CoroutineWorker(appContext, params) { 11 override suspend fun doWork(): Result = withContext(Dispatchers.IO) { 12 // いろいろな処理 13 14 return@withContext Result.success() 15 } 16}

試したこと

ライブラリのバージョンの変更しましたが、変わりませんでした。

補足情報(FW/ツールのバージョンなど)

端末:Huawei P10 lite
androidバージョン: 8.0.0
ライブラリ: androidx.work:work-runtime-ktx:2.3.4
IDE : android studio 4.0
targetSdkVersion : 29

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/07/10 08:33

DataCollectWorker を ListenableWorker にキャストしようとして失敗しているようですが、DataCollectWorker はどこでどう使われてますか?
tamago83

2020/07/14 20:55

activityのonCreateで以下のように実行しております。 WorkManager.getInstance(application) .getWorkInfoByIdLiveData(DataCollectWorker.allRequest())
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問