diff --git a/app/src/main/java/com/happycbbboy/MainActivity.java b/app/src/main/java/com/happycbbboy/MainActivity.java index e1a33b4..2fcb390 100644 --- a/app/src/main/java/com/happycbbboy/MainActivity.java +++ b/app/src/main/java/com/happycbbboy/MainActivity.java @@ -33,19 +33,6 @@ public class MainActivity extends AppCompatActivity { private ActivityMainBinding binding; private Menu menu; -/* private final BroadcastReceiver vpnSuccessReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - Notify vpnParam = (Notify) intent.getExtras().get(Notify.PARAM_KEY); - if (vpnParam != null) { - Toast.makeText(MainActivity.this, vpnParam.getTitle() + ":" + vpnParam.getMsg(), Toast.LENGTH_SHORT).show(); - if (!Objects.equals(vpnParam.getCode(), Notify.SUCCESS)) { - Log.e("VPN_SERVICE", vpnParam.getError()); - } - } - } - };*/ - @RequiresApi(api = Build.VERSION_CODES.TIRAMISU) @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/com/happycbbboy/ui/base/AppItermAdapter.java b/app/src/main/java/com/happycbbboy/ui/base/AppItermAdapter.java index 50440fd..83f11ad 100644 --- a/app/src/main/java/com/happycbbboy/ui/base/AppItermAdapter.java +++ b/app/src/main/java/com/happycbbboy/ui/base/AppItermAdapter.java @@ -1,6 +1,7 @@ package com.happycbbboy.ui.base; import android.content.Context; +import android.util.Log; import android.view.LayoutInflater; import android.view.ViewGroup; import android.widget.CompoundButton; @@ -22,8 +23,8 @@ public List getAllApps() { return allApps; } - public AppItermAdapter(Context context,List allApps) { - if (inflater==null) { + public AppItermAdapter(Context context, List allApps) { + if (inflater == null) { inflater = LayoutInflater.from(context); } this.allApps = allApps; @@ -34,12 +35,13 @@ public AppItermAdapter(Context context,List allApps) { @NonNull @Override public AppItermAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + Log.i("AppItermAdapter", "onCreateViewHolder accept"); return new ViewHolder(AppItermBinding.inflate(inflater, parent, false)); } @Override public void onBindViewHolder(@NonNull AppItermAdapter.ViewHolder holder, int position) { -// Log.i("AppItermAdapter", "onBindViewHolder accept:"+holder); + Log.i("AppItermAdapter", "onBindViewHolder accept:" + position); AppUtils.AppInfo appInfo = allApps.get(position); holder.bind(appInfo); /* holder.binding.appItermIcon.setImageDrawable(appInfo.getAppIcon()); diff --git a/app/src/main/java/com/happycbbboy/ui/home/ProxyConfListFrame.java b/app/src/main/java/com/happycbbboy/ui/home/ProxyConfListFrame.java index 23b21e2..6db2e6e 100644 --- a/app/src/main/java/com/happycbbboy/ui/home/ProxyConfListFrame.java +++ b/app/src/main/java/com/happycbbboy/ui/home/ProxyConfListFrame.java @@ -106,11 +106,10 @@ public void onClick(View view) { vpnOptionsImp.setRoute(routeConfig.getRoute()); if (routeConfig.getCurrentRoutePolicy() == RouteConfig.CURRENT_ROUTE_POLICY_NORMAL) { - }else if (routeConfig.getCurrentRoutePolicy() == RouteConfig.CURRENT_ROUTE_POLICY_FREEE) { - vpnOptionsImp.setIncludePackage(routeConfig.getCheckPackages()); - }else if (routeConfig.getCurrentRoutePolicy() == RouteConfig.CURRENT_ROUTE_POLICY_TUNNEL) { vpnOptionsImp.setExcludePackage(routeConfig.getCheckPackages()); + }else if (routeConfig.getCurrentRoutePolicy() == RouteConfig.CURRENT_ROUTE_POLICY_TUNNEL) { + vpnOptionsImp.setIncludePackage(routeConfig.getCheckPackages()); } // vpnOptionsImp.setExcludePackage(routeConfig.getExcludePackage()); // vpnOptionsImp.setIncludePackage(routeConfig.getIncludePackage()); diff --git a/app/src/main/java/com/happycbbboy/ui/route/RouteConfManagerFragment.java b/app/src/main/java/com/happycbbboy/ui/route/RouteConfManagerFragment.java index 61a4a82..835770d 100644 --- a/app/src/main/java/com/happycbbboy/ui/route/RouteConfManagerFragment.java +++ b/app/src/main/java/com/happycbbboy/ui/route/RouteConfManagerFragment.java @@ -119,8 +119,9 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat routeAppItrmSelectorConf.setAdapter(spinnerImageTextAdapter); // 添加滚动监听器实现预加载 LinearLayoutManager layoutManager = new LinearLayoutManager(requireContext()); + layoutManager.setInitialPrefetchItemCount(256); // 设置预加载的Item数量 appListOptions.setLayoutManager(layoutManager); - layoutManager.setInitialPrefetchItemCount(10); // 设置预加载的Item数量 + appListOptions.setItemViewCacheSize(256); Log.i("RouteConfManagerFragment", "start get app info"); if (id != null) { @@ -131,8 +132,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat name.setText(routeConfig.getName()); StringItermAdapter stringItermAdapter = new StringItermAdapter(routeConfig.getRoute()); routeConfigManagerItems.setAdapter(stringItermAdapter); - List allInstalledApps = AppUtils.getAllInstalledApps(getContext(),"", routeConfig.getCheckPackages()); - AppItermAdapter adapter = new AppItermAdapter(requireContext(),allInstalledApps); + List allInstalledApps = AppUtils.getAllInstalledApps(getContext(), "", routeConfig.getCheckPackages()); + AppItermAdapter adapter = new AppItermAdapter(requireContext(), allInstalledApps); appListOptions.setAdapter(adapter); /* // 高速缓存 不再每次调用on create ViewCacheExtension extension = new ViewCacheExtension(allInstalledApps, adapter, position -> { @@ -161,15 +162,11 @@ public void onNothingSelected(AdapterView parentView) { } else { routeAppItrmSelectorConf.setSelection(RouteConfig.CURRENT_ROUTE_POLICY_NORMAL); - List allInstalledApps = AppUtils.getAllInstalledApps(requireContext(),"", new ArrayList<>(0)); + List allInstalledApps = AppUtils.getAllInstalledApps(requireContext(), "", new ArrayList<>(0)); +// AppItermAdapter adapter = new AppItermAdapter(requireContext(), new ArrayList<>(allInstalledApps.subList(0, Math.min(AppItermAdapter.INITIAL_SIZE, allInstalledApps.size())))); AppItermAdapter adapter = new AppItermAdapter(requireContext(),allInstalledApps); appListOptions.setAdapter(adapter); - // 高速缓存 不再每次调用on create -/* ViewCacheExtension extension = new ViewCacheExtension(allInstalledApps, adapter, position -> { - AppUtils.AppInfo appInfo = allInstalledApps.get(position); - return appInfo.toString(); - }); - appListOptions.setViewCacheExtension(extension);*/ + } // 设置自定义的缓存逻辑 // 在Fragment或Activity中 diff --git a/app/src/main/java/com/happycbbboy/utils/AppUtils.java b/app/src/main/java/com/happycbbboy/utils/AppUtils.java index 79f9898..e1cc933 100644 --- a/app/src/main/java/com/happycbbboy/utils/AppUtils.java +++ b/app/src/main/java/com/happycbbboy/utils/AppUtils.java @@ -21,7 +21,7 @@ public static synchronized List getAllInstalledApps(Context context, St packageManager = context.getPackageManager(); } - if (packagesCache == null || packagesCache.size() != 0) { + if (packagesCache == null || packagesCache.size() == 0) { // Intent intent = new Intent(Intent.ACTION_MAIN, null); // intent.addCategory(Intent.CATEGORY_LAUNCHER); packagesCache = packageManager.getInstalledApplications(0); diff --git a/app/src/main/res/layout/fragment_route_conf_manager.xml b/app/src/main/res/layout/fragment_route_conf_manager.xml index 4fe39e7..92a4c46 100644 --- a/app/src/main/res/layout/fragment_route_conf_manager.xml +++ b/app/src/main/res/layout/fragment_route_conf_manager.xml @@ -73,6 +73,7 @@ android:src="@android:drawable/ic_menu_add" tools:ignore="SmallSp" /> + +