問題タブ [android-intentservice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ユーザー イベント/アクションのバックグラウンド リスナー
Android アプリケーションのバックグラウンドで動作し、ユーザーがモバイル アプリケーションで使用するすべてのアクション/イベントをリッスンして記録するライブラリを作成する必要があります。
例えば:
- ユーザーが特定のボタンをクリックすると、ライブラリはそのボタンをクリックしたことを通知します。
- ユーザーが地図をクリックすると、ライブラリはそのイベント/ジェスチャーを記録します
- ユーザーがスワイプすると、ライブラリはユーザーがスワイプしたことを通知します...
私のライブラリはアプリケーションのユーザビリティを追跡しており、ユーザーが使用するアクション/イベントを記録するある種のリスナーが必要です。
バックグラウンドサービスでイベントをキャッチする方法など、ウェブ上で何も見つかりません。について読んだのですがBroadcastReceiver
、IntentService
これをライブラリで問題に使用できるかわかりません。
目的を達成するための正しい方法を教えてください。
android - アプリがクリアされてもサービスを実行し続ける方法は?
ユーザーが最近の画面からアプリをクリアした場合でも、開始後にサービスがバックグラウンドで実行され続けるようにする方法はありますか? 完璧な例は Pandora のアプリです。再生を開始すると、最近の履歴から削除しても、音楽は再生され続け、通知は残ります。
私のサンプル アプリでは、サービスが実行されているかどうかを確認できるように現在の時刻を 500 ミリ秒ごとに記録する単純なハンドラーを用意しています。4 つのトグルのいずれかを使用して開始し、それぞれが 4 つのサービスのいずれかで開始するように設定します。開始タイプ (START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY)。サービスを開始し、アプリを終了してから、最近の履歴から消去します。いずれの場合も、サービスが停止し、ループ ロギングが停止します。
MainActivity.java
RecordingService.java
android - Android 起動 ActivityRecognition 手動で
私の Android アプリは、現在のアクティビティ (ランニング、ウォーキングなど) を検出する必要があります。
Android Dev Page の指示に従いました: http://developer.android.com/reference/com/google/android/gms/location/ActivityRecognitionClient.html
そして、私のIntent-Serviceでは:
ここに私の問題があります:私は自分で活動認識を開始したいです。Android Dev Page のコードは、それを行うことになっているようです。しかし、サービスを AndroidManifest に追加しないと、何もしません。onConnected() メソッドは呼び出されますが、onHandleIntent() は呼び出されません。
そのため、マニフェストに追加する必要があるかもしれないと考えました。現在はアクティビティを受け取りますが、常に受け取ります。これも私が望むものではありません。私は何を間違っていますか?
前もってありがとう、ステフ
android - IntentService の特定のメソッドを開始するにはどうすればよいですか?
(1) アクティビティから、IntentService の特定のメソッド (アクション) を呼び出すことはできますか? 以下のサンプル コードを使用して、ONLY ACTION_BAZ を呼び出したいと思います。
(2) 私の活動から、私は電話できる/すべきですか?
では、(1)のIntentServiceのメソッド(アクション)に引数param1、param2を指定してメソッドを呼び出していないのは問題でしょうか?
(3) 最後に、 Googleが提供するサンプル コード(deveoper.android.com)では、私の IntentService は常にメソッド (アクション) Foo と Baz の両方をこの順序で開始しますか? 私が完全にずれている場合は、私の理解を修正してください...
UI を遅らせないデータベース機能を実行するバックグラウンド サービスとして myIntentService を呼び出すことを意味します。私は持っているかもしれません
ActionFoo は、アセット .csv ファイルから MainActivity によって既に作成されたテーブルにデータを入力します。
MainActivity の onUpgrade 呼び出しの場合、ActionBaz は前述のテーブルをドロップする可能性があります。
バックグラウンドでアセットが入力されたテーブルを処理できる一方で、ユーザーはユーザー定義のテーブルに手動でデータを入力できました。
私の 3 番目の懸念は、myIntentService へのすべての呼び出しで、ActionFoo (テーブルにデータを入力) とそれに続く ActionBaz (作成したばかりのテーブルをドロップする) の両方が実行されるのでしょうか? または、私の onHandleIntent は、指定されたアクション (インテントに追加されたもの) のみが処理されることを確認しますか?
インテントの setAction とアクティビティ内のパラメータの両方を明示的に言及する必要がある場合、IntentService のヘルパー メソッド (つまり startActionFoo) はどのように役立ちますか? とにかく、それらはすべて呼び出しアクティビティに再定義する必要があります。
android - onReceive メソッドが呼び出されない
を使用して、サービスからアクティビティにブロードキャストを送信しようとしましたIntentService
。そのために、次のコードを使用しました。
次に、Activity クラスで Receiver を次のように定義します。
in メソッドとinメソッドを使用registerReceiver
しましたonResume
unregisterReceiver
onPause
しかし、onReceive
メソッドが呼び出されない、
このサイトのセクション 7 を使用しました
私は何を逃したのですか?
編集
別の解決策はありましたか?サービスからアクティビティを通知してデータを更新しようとしました。
android - IntentService からのフラグメントの更新
私が取り組んでいるアプリケーションには、3 つのフラグメントを持つアクティビティがあります。各フラグメントは、IntentService から受信したデータを表示する必要があります。
Fragment 1 - アイコン、名前、および説明 Fragment 2 - 記事のリスト Fragment 3 - アイテムのリスト
このデータを受信機からフラグメントにプッシュするための最良の方法は何ですか?それとも間違った方法でアプローチしていますか? サービスをコンテキストから切り離したかったので、AsyncTasks を使用しませんでしたか、それとも間違った決定でしたか?
android - IntentService 内の Android Create Intent
私はAndroidに非常に慣れていないので、おそらく些細な問題だと思うことに頭を悩ませてきました-チュートリアルやその他のStackOverflowの質問を見てきましたが、役に立ちませんでした.
IntentService 内に Intent を作成しようとしていますが、下の行マーカー ERROR で常に NullPointerException を取得します (sendNotification メソッド内)。
私はさまざまに試しました:
インテント インテント = 新しいインテント(getApplicationContext(), TestActivity.class);
インテント インテント = 新しいインテント(これ、TestActivity.class);
インテント インテント = 新しいインテント(SQLHealthService.this, TestActivity.class);
Intent を作成しようとすると、常に null ポインター例外が発生します。
編集:明確にするために、私が達成しようとしていることについて言及する必要があります。AlarmManager を使用して、アプリを 10 分ごとに「起動」させ、REST Web サービスを呼び出し、特定の条件が満たされた場合に通知を送信しようとしています。
SQLHealthService が呼び出されます
android - Android - ブロードキャストレシーバーを登録/登録解除するのに最適な場所?
このトピックに関してすでにたくさんの質問があることは知っていますが、私の問題に正確に一致するものは見つかりませんでした.
シナリオ
クリックするとが開始Button
され、 が表示されます。は、通常 5 ~ 10 秒かかるネットワーク コールを実行し、その後に. 登録済みと未登録を実装するinメソッドを削除しますFragment
IntentService
ProgressBar
IntentService
sendBroadcast()
ProgressBar
onReceive()
Fragment
BroadcastReceiver
onResume()
onPause()
問題
ユーザーが を押すButton
と、IntentService
が開始されたとします。IntentService
がブロードキャストを送信する前に、ユーザーは設定画面を開くなどの操作を行います。今、私のフラグメントは にありonStop()
ます。がIntentService
今すぐブロードキャストを送信すると、私Fragment
はそれを見逃してしまい、ユーザーが戻ると、終わりのないProgressBar
.
設定画面の呼び出しを開くとブロードキャストが失われるため、登録/登録解除をonStart()
/に移動できません。onStop()
onStop()
これにより、onCreate()
/が残りますonDestroy()
。しかし、ドキュメントによると、呼び出される可能性があるという保証はありませんonDestroy()
。そのため、登録/登録解除をどこで行うべきかについて、ちょっと迷っています。
助言がありますか?