我已经创建了一个应用程序,它从 TCP客户端接收一些数据到 TCP服务器,用于存储 SQlite DB 中的数据,实际上我已经recyclerView
在哪里可视化所有数据,但现在我的问题就是我想要的2周时间来实时刷新recyclerView
,我的意思是,如果 TCP客户端将新的软件包发送到我的 TCP服务器,如果我正在使用 {{1数据必须动态添加。
我还将接受有关如何改进我的应用的任何类型的 提示和建议 。
实际上这是我在Android上创建的 1st 应用程序。
HERE您可以找到我的recyclerView
(TCPServer),Server
,RecyclerViewAdapter
(构造函数),Adapter
(我调用{{1}的类}}
希望有人能够帮助我,并且感到非常感激。
答案 0 :(得分:1)
尝试发送广播方法。以下是步骤:
创建一个在您的活动中扩展BroadcastReceiver的内部类。
private class ExampleBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//do stuffs here, e.g. getting extras from intent
}
在任何方法之外声明类的实例。
public class MainActivity extends AppCompatActivity {
private ExampleBroadcastReceiver exampleBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
//stuffs
}
}
覆盖onResume方法。初始化您刚在此方法中创建的实例。然后,使用intent-filter注册它。这将确保用户打开活动时您的广播接收器就绪。
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.MainActivity");
exampleBroadcastReceiver = new ExampleBroadcastReceiver();
LocalBroadcastManager.getInstance(this).registerReceiver(exampleBroadcastReceiver, filter);
}
覆盖onPause方法并取消注册您的接收器。
@Override
protected void onPause() {
super.onPause();
try {
LocalBroadcastManager.getInstance(this).unregisterReceiver(exampleBroadcastReceiver);
} catch (IllegalArgumentException e) {
if (!e.getMessage().contains("Receiver not registered")) {
// unexpected, re-throw
throw e;
}
确保将ArrayList用于动态数据。
每当您从服务器接收数据后,将数据存储到数据库中后,发送带有附加内容的广播,其中包含您要在活动中显示的数据。
<强> EDITED 强>
我使用LocalBroadcastManager的实例注册了接收器。