收到后台服务的响应后刷新活动

Ada*_*ms 2 service android background-service android-listview android-activity

我在一个应用程序上工作,在该应用程序中,我使用后台服务将请求发送到服务器,然后将响应存储在数据库中,并在接收到来自后台服务的答案并将其保存在数据库中时动态显示数据,知道我正在使用

ListView

显示数据库中的数据。每当我在数据库中保存新数据时,如何刷新活动?单击后我一直试图显示数据,它如何工作?

小智 5

假设您使用的是真正的服务,还是没有使用AsyncTask。

使用BroadcastReceiver模式。在您的服务中发送广播。

LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent("data_changed"));
Run Code Online (Sandbox Code Playgroud)

在包含列表视图的活动中声明接收者

  private BroadcastReceiver dataChangeReceiver= new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // update your listview
    }
};
Run Code Online (Sandbox Code Playgroud)

注册和取消注册

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    IntentFilter inF = new IntentFilter("data_changed");
    LocalBroadcastManager.getInstance(this).registerReceiver(dataChangeReceiver,inF);



}
 @Override
protected void onPause() {
    super.onPause();
    LocalBroadcastManager.getInstance(this).unregisterReceiver(dataChangeReceiver);
}
Run Code Online (Sandbox Code Playgroud)