0
我的應用程序有一個聊天屏幕來發送和接收消息。每當接收到消息時,都會發送推送通知並顯示最新收到的消息。這一切工作正常。如何檢查當前可見活動並從任何地方啓動其中一種方法?
但是,當我收到我的推送通知時,我想讓聊天畫面自行更新。我想這需要知道聊天屏幕當前是否可見。我如何從BroadcastReceiver
的onReceive()
方法中做到這一點?
這裏有一個小的僞代碼(在我BroadcastReceiver
子類):
public void onReceive(Context context, Intent intent)
{
if(currentlyVisibleActivity.getClass() == chatScreenActivity.class())
{
((chatScreenActivity)currentlyVisibleActivity).getMessages();
}
}
我想知道如何獲得currentlyVisibleActvity,使call getMessages()
如果它是一個chatScreenActivity它。
您是否將聊天消息存儲在ContentProvider或類似的地方? – Jens 2012-04-06 19:55:13
當測試出聊天功能時,我每隔15秒就會ping服務器以獲取新消息,然後將它們存儲在本地SQLite數據庫中。這只是爲了測試getMessages()方法,我知道每15秒鐘ping一次服務器並不是一件好事。所以我打算每當我收到推送通知時都調用getMessages()。 – PaulG 2012-04-06 19:58:27
Right-o。所以實現一個合適的ContentProvider(檢出[SQLiteContentProvider](http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android-apps/2.3_r1/com/android/apps /tag/provider/SQLiteContentProvider.java/?v=source)來擴展適當的抽象實現)。無論何時你調用#getMessages()或類似的方法,只需觸發[notifyChange()](http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange%28android.net.Uri,%20android.database .ContentObserver%29)方法和任何正確實現的ListView(或類似的)都會更新。 – Jens 2012-04-06 20:02:53