mirror of
https://github.com/emanuele-f/PCAPdroid.git
synced 2026-06-19 21:05:25 +08:00
Avoid unnecessary updates when in background
This commit is contained in:
parent
6ae6a0f7b8
commit
adcc8b6e5a
@ -553,7 +553,7 @@ public class CaptureService extends VpnService implements Runnable {
|
||||
}
|
||||
|
||||
public void sendStatsDump(VPNStats stats) {
|
||||
Log.d(TAG, "sendStatsDump");
|
||||
//Log.d(TAG, "sendStatsDump");
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putSerializable("value", stats);
|
||||
|
||||
@ -56,12 +56,19 @@ public class AppsFragment extends Fragment implements ConnectionsListener {
|
||||
private BroadcastReceiver mReceiver;
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
unregisterConnsListener();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
registerConnsListener();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater,
|
||||
ViewGroup container, Bundle savedInstanceState) {
|
||||
@ -95,8 +102,6 @@ public class AppsFragment extends Fragment implements ConnectionsListener {
|
||||
}
|
||||
});
|
||||
|
||||
registerConnsListener();
|
||||
|
||||
/* Register for service status */
|
||||
mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
@ -104,9 +109,11 @@ public class AppsFragment extends Fragment implements ConnectionsListener {
|
||||
String status = intent.getStringExtra(CaptureService.SERVICE_STATUS_KEY);
|
||||
|
||||
if(CaptureService.SERVICE_STATUS_STARTED.equals(status)) {
|
||||
// register the new connection register
|
||||
unregisterConnsListener();
|
||||
registerConnsListener();
|
||||
if(listenerSet) {
|
||||
// register the new connection register
|
||||
unregisterConnsListener();
|
||||
registerConnsListener();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -122,6 +129,7 @@ public class AppsFragment extends Fragment implements ConnectionsListener {
|
||||
if(mReceiver != null) {
|
||||
LocalBroadcastManager.getInstance(requireContext())
|
||||
.unregisterReceiver(mReceiver);
|
||||
mReceiver = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -88,8 +88,15 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
private AppsResolver mApps;
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
registerConnsListener();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
unregisterConnsListener();
|
||||
}
|
||||
@ -191,7 +198,6 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
}
|
||||
});
|
||||
|
||||
registerConnsListener();
|
||||
refreshMenuIcons();
|
||||
|
||||
int uidFilter = Utils.UID_NO_FILTER;
|
||||
@ -221,8 +227,10 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
|
||||
if(CaptureService.SERVICE_STATUS_STARTED.equals(status)) {
|
||||
// register the new connection register
|
||||
unregisterConnsListener();
|
||||
registerConnsListener();
|
||||
if(listenerSet) {
|
||||
unregisterConnsListener();
|
||||
registerConnsListener();
|
||||
}
|
||||
|
||||
autoScroll = true;
|
||||
showFabDown(false);
|
||||
@ -291,11 +299,6 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
mOldConnectionsText.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
// This performs an unoptimized adapter refresh
|
||||
private void refreshUidConnections() {
|
||||
ConnectionsRegister reg = CaptureService.getConnsRegister();
|
||||
@ -315,7 +318,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connectionsChanges(int num_connetions) {
|
||||
public void connectionsChanges(int num_connections) {
|
||||
// Important: must use the provided num_connections rather than accessing the register
|
||||
// in order to avoid desyncs
|
||||
|
||||
@ -325,9 +328,9 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
return;
|
||||
}
|
||||
|
||||
Log.d(TAG, "New dataset size: " + num_connetions);
|
||||
Log.d(TAG, "New dataset size: " + num_connections);
|
||||
|
||||
mAdapter.setItemCount(num_connetions);
|
||||
mAdapter.setItemCount(num_connections);
|
||||
mAdapter.notifyDataSetChanged();
|
||||
recheckScroll();
|
||||
|
||||
@ -452,9 +455,12 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
if(mAdapter.getUidFilter() != uid) {
|
||||
// rather than calling refreshAllTheConnections, its better to let the register to the
|
||||
// job by properly scheduling the ConnectionsListener callbacks
|
||||
boolean hasListener = listenerSet;
|
||||
unregisterConnsListener();
|
||||
mAdapter.setUidFilter(uid);
|
||||
registerConnsListener();
|
||||
|
||||
if(hasListener)
|
||||
registerConnsListener();
|
||||
}
|
||||
|
||||
refreshFilterIcon();
|
||||
@ -465,7 +471,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener
|
||||
return;
|
||||
|
||||
int uid = mAdapter.getUidFilter();
|
||||
AppDescriptor app = mApps.get(uid);
|
||||
AppDescriptor app = (uid != Utils.UID_NO_FILTER) ? mApps.get(uid) : null;
|
||||
|
||||
if(app == null)
|
||||
app = mNoFilterApp;
|
||||
|
||||
@ -100,6 +100,36 @@ public class StatusFragment extends Fragment implements AppStateListener, AppsLo
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if((mMenu != null) && (mActivity != null))
|
||||
appStateChanged(mActivity.getState());
|
||||
|
||||
/* Register for stats update */
|
||||
mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
processStatsUpdateIntent(intent);
|
||||
}
|
||||
};
|
||||
|
||||
LocalBroadcastManager.getInstance(requireContext())
|
||||
.registerReceiver(mReceiver, new IntentFilter(CaptureService.ACTION_STATS_DUMP));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
if(mReceiver != null) {
|
||||
LocalBroadcastManager.getInstance(requireContext())
|
||||
.unregisterReceiver(mReceiver);
|
||||
mReceiver = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater,
|
||||
ViewGroup container, Bundle savedInstanceState) {
|
||||
@ -181,17 +211,6 @@ public class StatusFragment extends Fragment implements AppStateListener, AppsLo
|
||||
// Make URLs clickable
|
||||
mCollectorInfo.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
|
||||
/* Register for stats update */
|
||||
mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
processStatsUpdateIntent(intent);
|
||||
}
|
||||
};
|
||||
|
||||
LocalBroadcastManager.getInstance(requireContext())
|
||||
.registerReceiver(mReceiver, new IntentFilter(CaptureService.ACTION_STATS_DUMP));
|
||||
|
||||
/* Important: call this after all the fields have been initialized */
|
||||
mActivity.setAppStateListener(this);
|
||||
|
||||
@ -199,16 +218,6 @@ public class StatusFragment extends Fragment implements AppStateListener, AppsLo
|
||||
appStateChanged(mActivity.getState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
if(mReceiver != null) {
|
||||
LocalBroadcastManager.getInstance(requireContext())
|
||||
.unregisterReceiver(mReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(@NonNull Menu menu, MenuInflater menuInflater) {
|
||||
menuInflater.inflate(R.menu.main_menu, menu);
|
||||
@ -221,14 +230,6 @@ public class StatusFragment extends Fragment implements AppStateListener, AppsLo
|
||||
appStateChanged(mActivity.getState());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if((mMenu != null) && (mActivity != null))
|
||||
appStateChanged(mActivity.getState());
|
||||
}
|
||||
|
||||
private void refreshFilterInfo() {
|
||||
if((mAppFilter == null) || (mAppFilter.isEmpty())) {
|
||||
mFilterDescription.setText(R.string.no_app_filter);
|
||||
@ -309,7 +310,7 @@ private void refreshPcapDumpInfo() {
|
||||
mCollectorInfo.setText(info);
|
||||
|
||||
// Check if a filter is set
|
||||
if(mAppFilter != null) {
|
||||
if((mAppFilter != null) && (!mAppFilter.isEmpty())) {
|
||||
AppDescriptor app = AppsResolver.resolve(requireContext().getPackageManager(), mAppFilter);
|
||||
|
||||
if((app != null) && (app.getIcon() != null)) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user