[解決済み] IntentとPendingIntentの違いについて
質問
いくつかの記事を読みました。すべて同じことをするようで、私は以下のようにサービスを開始することの違いは何ですかと疑問に思いました。
Intent intent = new Intent(this, HelloService.class);
startService(intent);
またはそれ以下
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(this, MyService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);
読み進めていくと、サービス内でSTART_STICKYというパラメータを返した場合、この2つは同じことをするのですね。
どのように解決するのですか?
意図
Android Intent は、インテントを運ぶオブジェクトです。つまり、アプリケーションの内部または外部のあるコンポーネントから別のコンポーネントへのメッセージです。インテントは、アプリケーションの3つのコアコンポーネント(アクティビティ、サービス、BroadcastReceivers)の間でメッセージを通信することができます。
インテント自体 (インテント オブジェクト) は、受動的なデータ構造です。それは実行される操作の抽象的な記述を保持します。
例えば、メールクライアントを起動し、メールを送信する必要があるアクティビティがあるとします。これを行うには、アクティビティは次のようなアクションを持つインテントを送信します。
ACTION_SEND
というアクションのIntentを、適切なchooserとともにAndroid Intent Resolverに送ります。
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
指定されたチューザーは、ユーザーがメールデータを送信する方法を選択するための適切なインターフェースを提供します。
明示的なインテント
// Explicit Intent by specifying its class name
Intent i = new Intent(this, TargetActivity.class);
i.putExtra("Key1", "ABC");
i.putExtra("Key2", "123");
// Starts TargetActivity
startActivity(i);
暗黙のインテント
// Implicit Intent by specifying a URI
Intent i = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.example.com"));
// Starts Implicit Activity
startActivity(i);
保留中のインテント
PendingIntentは、あなたが 海外 アプリケーション (例: NotificationManager、AlarmManager、Home Screen AppWidgetManager、またはその他のサードパーティアプリケーション) に渡すトークンで、これにより外国のアプリケーションは、あなたのアプリケーションの権限を使用して、定義済みのコードの一部を実行することができるようになります。
PendingIntentを他のアプリケーションに与えることで、あなたはそのアプリケーションに、あなたが指定した操作を実行する権利を与えることになります。 指定した操作を実行する権利を与えることになります。 が自分自身であるかのように (同じ権限と ID で) 指定した操作を実行する権利を与えることになります。そのため そのため、PendingIntent をどのように構築するかについて注意する必要があります。 たとえば、提供する基本 Intent には、ほとんど常に コンポーネント名を明示的に自分のコンポーネントに設定し、最終的にそのコンポーネントに送信されるようにします。 最終的にそこに送信され、他のどこにも送信されないようにするためです。
Pending Intent の例: http://android-pending-intent.blogspot.in/
出典: アンドロイド インテント と アンドロイドの保留中のインテント
これが役立つといいのですが。
関連
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] TextViewでテキストを水平・垂直方向にセンタリングするには?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] AndroidのPendingIntentとは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] handler.postDelayed()を停止する。
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] google-services.jsonって実際何してるの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AndroidのPendingIntentとは何ですか?
-
[解決済み】アクティビティコンテキストまたはアプリケーションコンテキストを呼び出すタイミングは?
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] FragmentPagerAdapterのgetItemが呼び出されない
-
[解決済み] FABアイコンの色を設定する