백그라운드에서 비동기 작업을 실행하여 네트워크를 통해 내 로컬 sqLite 데이터베이스를 지속적으로 업데이트합니다. 내 응용 프로그램을 일시 중지 한 후 임의의 시간을 제외하고 모든 것이 잘 작동합니다. 내가 오류를 얻을 경우 여기에 코드의 일부이다 :안드로이드 : 새로운 의도로 AsyncTask에서 NullPointerException이 발생합니다.
public class AsyncHardwareDBUpdate extends AsyncTask {
ImageCellAdapter mImageCellAdapter;
GridView dynGrid;
Context mContext;
Boolean mFinished = false;
HardwareSyncReceiver myHardwareReceiver;
private Handler handler;
public AsyncHardwareDBUpdate(Context mContext) {
this.mContext = mContext;
}
@Override
protected Object doInBackground(Object... params) {
if (mContext != null){
오류는 다음 행으로 이동 :
Intent intentHardwareSync = new Intent(mContext,SyncHardwareStateService.class);
내가 이해 못할, 이미 mContext 여부를 확인하는 경우, 여기에 null이 될 수있는 ! = null. 코드의 나머지 :
mContext.startService(intentHardwareSync);
myHardwareReceiver = new HardwareSyncReceiver();
//register BroadcastReceiver
IntentFilter intentHardwareSyncFilter = new IntentFilter(SyncHardwareStateService.ACTION_SyncHardwareStateService);
intentHardwareSyncFilter.addCategory(Intent.CATEGORY_DEFAULT);
//Handler for the separate Thread
HandlerThread handlerThread = new HandlerThread("MyNewThread");
handlerThread.start();
Looper looper = handlerThread.getLooper();
// Create a handler for the service
handler = new Handler(looper);
// Register the broadcast receiver to run on the separate Thread
mContext.registerReceiver (myHardwareReceiver, intentHardwareSyncFilter, null, handler);
}
return null;
}
05-11 18:07:37.830: E/AndroidRuntime(15063): FATAL EXCEPTION: AsyncTask #1
05-11 18:07:37.830: E/AndroidRuntime(15063): java.lang.RuntimeException: An error occured while executing doInBackground()
05-11 18:07:37.830: E/AndroidRuntime(15063): at android.os.AsyncTask$3.done(AsyncTask.java:299)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-11 18:07:37.830: E/AndroidRuntime(15063): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.lang.Thread.run(Thread.java:856)
05-11 18:07:37.830: E/AndroidRuntime(15063): Caused by: java.lang.NullPointerException
05-11 18:07:37.830: E/AndroidRuntime(15063): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
05-11 18:07:37.830: E/AndroidRuntime(15063): at android.content.ComponentName.<init>(ComponentName.java:75)
05-11 18:07:37.830: E/AndroidRuntime(15063): at android.content.Intent.<init>(Intent.java:3350)
05-11 18:07:37.830: E/AndroidRuntime(15063): at com.smarthomev5.AsyncUpdateThread.AsyncHardwareDBUpdate.doInBackground(AsyncHardwareDBUpdate.java:38)
05-11 18:07:37.830: E/AndroidRuntime(15063): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-11 18:07:37.830: E/AndroidRuntime(15063): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-11 18:07:37.830: E/AndroidRuntime(15063): ... 5 more
onPostexecute에서 의도를 시작하십시오 – Chiradeep
감사합니다 :) 아직 예기치 않은 오류가 발생했습니다 ... –