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