私は Android プログラミングの初心者です (主に Windows で C# を使用しています)。サービスとアプリで構成されるコードを継承しました。サービスとアプリの一部を別のアプリで再利用したい。図書館に置いてます。1 つの問題を除いて、すべてがうまくいきました。サービスには、メイン アクティビティを画面に表示するコードが含まれています。このアクティビティを名前で呼び出します。明らかに、共通コードでそれを使用することはできません。サービス コードは次のようになります。
final int NOTIFY_1 = 0x1001;
NotificationManager notifier = (NotificationManager) context.getSystemService(
Context.NOTIFICATION_SERVICE);
final Notification notify = new Notification(
R.drawable.icon_my_color, ticker, System.currentTimeMillis());
notify.number = 1;
notify.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
notify.ledARGB = android.graphics.Color.CYAN;
notify.ledOnMS = 500;
notify.ledOffMS = 500;
Intent toLaunch = new Intent(context, MyBankingActivity.class);
toLaunch.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent intentBack = PendingIntent.getActivity(context, 0, toLaunch, PendingIntent.FLAG_CANCEL_CURRENT);
notify.setLatestEventInfo(context, title, message, intentBack);
notifier.notify(NOTIFY_1, notify);
このコードは、何か興味深いことが起こったとき (銀行口座がマイナスになったときなど)、サービスによって実行されます。問題は、上記でハードコーディングされた「MyBankingActivity.class」です。MyBankingActivity はアプリケーション固有であるため、ライブラリから削除しました。ただし、古いアプリを動作させる必要があります。ライブラリとアプリに分けて、ライブラリ内のかなりのロジックを別のアプリで再利用できるようにしたいだけです。その他のアプリでは、この「銀行イベント」の通知を特に受けたくありません。私が行ったとしても、コードは現在、1 つのアクティビティの名前でハードコーディングされています。
ここでロジックを分離する正しい方法は何ですか? サービスはイベントを「公開」し、関心のあるアプリは「サブスクライブ」する必要があるように思われます。少なくとも、それは私がよく知っている用語です。ちなみに、今のところ、コードのブロック全体をコメントアウトしただけで、もちろんこの通知を受け取ることを除いて、すべてが古いアプリで正常に動作します.
私の質問が広範であることを認識しています(そして謝罪します)。「人に魚を与えるのではなく、釣り方を教える」方がよいかもしれないので、このトピックをより広くカバーしている参考文献/記事/本を自由に推薦してください. 自分の限られたライブラリを自分で調べようとしましたが、私の本が入門的すぎるか (Android in Action はその 1 つです)、間違った場所を探しています。図書館の立ち上げや執筆サービスの話題でさえ、手に入れるのは難しいようです。1. サービスは、アプリの知識がなくても関心のあるアプリにイベントをどのように伝達するか 2. 何らかのメッセージに基づいてアプリをフォアグラウンドに移動するにはどうすればよいかサービスから受け取った 3. 既存のアプリを取得して、ライブラリ (非 GUI または非アプリ固有のもの) とアプリに侵入する方法。4.
前もって感謝します、デイブ