我是 Android 编程的新手(我主要在 Windows 上使用 C#)。我继承了一些由服务和应用程序组成的代码。我想在另一个应用程序中重用该服务和一些应用程序。我把它放在图书馆里。除了一个问题,一切都很顺利。该服务有一些代码将主要活动放在屏幕上。它按名称调用此活动。显然,我不能在通用代码中使用它。服务代码如下所示:
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,因为它是特定于应用程序的。但是,我必须让旧应用程序正常工作。我只想把它分成一个库和应用程序,这样我就可以在另一个应用程序中重用库中的大量逻辑。在那个其他应用程序中,我并不特别希望收到有关此“银行事件”的通知。即使我这样做了,代码目前也是用一个活动的名称硬编码的。
在这里分离逻辑的正确方法是什么?看起来服务应该“发布”事件,感兴趣的应用程序应该“订阅”。至少这是我熟悉的术语。顺便说一句,目前,我刚刚注释掉了整个代码块,并且在旧应用程序中一切正常,当然除了收到此通知。
我意识到(并道歉)我的问题很广泛。由于“授人以渔,不如授人以渔”可能更好,因此请随意推荐涵盖该主题的参考资料/文章/书籍。我曾尝试自己查看有限的图书馆,但要么我的书太介绍性(Android in Action 就是其中之一),要么我找错地方了。即使是建立图书馆和写作服务的话题似乎也很难找到。在我看来,有几个关键概念我很弱: 1. 服务如何在不了解应用程序的情况下将事件传达给感兴趣的应用程序 2. 如何根据某些消息将应用程序带到前台从服务 3 收到。如何获取现有应用程序并闯入库(对于非 gui 或非应用程序特定的东西)和应用程序。4.
非常感谢,戴夫