Java 如何解析空对象引用
我有一个项目运行良好后,在安卓工作室建设。但我需要将该项目导入另一个项目。这就像将两个项目合并为一个项目。我觉得一切都很好。但是当我尝试在模拟器中运行时,我发现了一些错误。我需要你的帮助 这是我的密码:Java 如何解析空对象引用,java,android-studio,nullpointerexception,Java,Android Studio,Nullpointerexception,我有一个项目运行良好后,在安卓工作室建设。但我需要将该项目导入另一个项目。这就像将两个项目合并为一个项目。我觉得一切都很好。但是当我尝试在模拟器中运行时,我发现了一些错误。我需要你的帮助 这是我的密码: public class SysCacheScanTask extends AsyncTask<Void, Void, Void> { private IScanCallback mCallback; private int mScanCount; priv
public class SysCacheScanTask extends AsyncTask<Void, Void, Void> {
private IScanCallback mCallback;
private int mScanCount;
private int mTotalCount;
private ArrayList<JunkInfo> mSysCaches;
private HashMap<String, String> mAppNames;
private long mTotalSize = 0L;
public SysCacheScanTask(IScanCallback callback) {
this.mCallback = callback;
}
@Override
protected Void doInBackground(Void... params) {
this.mCallback.onBegin();
PackageManager pm = AppController.getContext().getPackageManager();
List<ApplicationInfo> installedPackages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
IPackageStatsObserver.Stub observer = new PackageStatsObserver();
this.mScanCount = 0;
this.mTotalCount = installedPackages.size();
this.mSysCaches = new ArrayList<>();
this.mAppNames = new HashMap<>();
for (int i = 0; i < mTotalCount; i++) {
ApplicationInfo info = installedPackages.get(i);
this.mAppNames.put(info.packageName, pm.getApplicationLabel(info).toString());
getPackageInfo(info.packageName, observer);
}
return null;
}
public void getPackageInfo(String packageName, IPackageStatsObserver.Stub observer) {
try {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
PackageManager pm = AppController.getContext().getPackageManager();
Method getPackageSizeInfo = pm.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class);
getPackageSizeInfo.invoke(pm, packageName, observer);
} else {
final StorageStatsManager storageStatsManager = (StorageStatsManager) AppController.getContext().getSystemService(Context.STORAGE_STATS_SERVICE);
final StorageManager storageManager = (StorageManager) AppController.getContext().getSystemService(Context.STORAGE_SERVICE);
try {
ApplicationInfo ai = AppController.getContext().getPackageManager().getApplicationInfo(packageName, 0);
StorageStats storageStats = storageStatsManager.queryStatsForUid(ai.storageUuid, AppController.getContext().getApplicationInfo().uid);
long cacheSize = storageStats.getCacheBytes();
long dataSize = storageStats.getDataBytes();
long apkSize = storageStats.getAppBytes();
PackageStats packageStats = new PackageStats(packageName);
packageStats.cacheSize = cacheSize;
packageStats.dataSize = dataSize;
packageStats.codeSize = apkSize;
observer.onGetStatsCompleted(packageStats, true);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
private class PackageStatsObserver extends IPackageStatsObserver.Stub {
@Override
public void onGetStatsCompleted(PackageStats packageStats, boolean succeeded) throws RemoteException {
mScanCount++;
if (packageStats == null || !succeeded) {
} else {
JunkInfo info = new JunkInfo();
info.mPackageName = packageStats.packageName;
info.name = mAppNames.get(info.mPackageName);
info.mSize = packageStats.cacheSize + packageStats.externalCacheSize;
if (info.mSize > 0) {
mSysCaches.add(info);
mTotalSize += info.mSize;
}
mCallback.onProgress(info);
}
if (mScanCount == mTotalCount) {
JunkInfo info = new JunkInfo();
info.name = AppController.getContext().getResources().getString(R.string.junk_clean_system_cache);
info.mSize = mTotalSize;
Collections.sort(mSysCaches);
Collections.reverse(mSysCaches);
info.mChildren = mSysCaches;
info.mIsVisible = true;
info.mIsChild = false;
ArrayList<JunkInfo> list = new ArrayList<>();
list.add(info);
mCallback.onFinish(list);
}
}
}
}
2020-10-31 09:41:18.158 8138-8138/com.antivirus.flashvpn E/speed-->>: down-->>0 upload-->>0
2020-10-31 09:41:19.165 8138-8138/com.antivirus.flashvpn E/speed-->>: down-->>0 upload-->>0
2020-10-31 09:41:20.169 8138-8138/com.antivirus.flashvpn E/speed-->>: down-->>0 upload-->>0
2020-10-31 09:41:20.854 8138-8549/com.antivirus.flashvpn E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.antivirus.flashvpn, PID: 8138
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$4.done(AsyncTask.java:415)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.PackageManager android.content.Context.getPackageManager()' on a null object reference
at com.antivirus.flashvpn.anti_virus.tasks.ProcessScanTask.doInBackground(ProcessScanTask.java:50)
at com.antivirus.flashvpn.anti_virus.tasks.ProcessScanTask.doInBackground(ProcessScanTask.java:20)
at android.os.AsyncTask$3.call(AsyncTask.java:394)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
2020