0

我在每個應用程序啓動updaiting數據庫,我用IntentService前,但數據被更新之前,我的活動已開始,所以數據列表是空的,我已經rewriten它使用Service(我已經創建了自己的Service像個IntentService,所以我可以控制好由Service創建的線程)。正如你首先看到的,我正在保存數據,並且只有在這之後,我纔開始我的活動。但是,我的活動開始之前,無論如何保存數據,任何建議,爲什麼,或者我該如何解決這個問題?無法保存和使用服務顯示數據/ IntentService正確

此外

如果你有一些的expirience與ORM /數據庫工作異步這將是巨大的,我只是想學習如何與數據庫正常工作。任何建議都是有好處的。

public class DatabaseWorkService extends Service { 
    private ServiceHandler mServiceHandler; 
    private DatabaseReference mDatabase; 

    private ConnectivityManager conMan; 
    private NetworkInfo netInfo; 
    private String currentTask; 
    private Intent tempIntent; 
    private Looper mServiceLooper; 
    private ResultReceiver resultReceiver; 
    private Context context =this; 
    public DatabaseWorkService delegate = null; 


    // Handler that receives messages from the thread 
    private final class ServiceHandler extends Handler { 
     public ServiceHandler(Looper looper) { 
      super(looper); 
     } 
     @Override 
     public void handleMessage(Message msg) { 
      if(msg.getData()!=null) { 
       switch (msg.getData().getString(Utils.INTENT_SERVICE_INVOKE)) { 
        case Utils.LOAD_All_DATA: { 
         saveActivities(); 
         savePersons(); 
         savePictureData(); 

         Intent intent = new Intent(context, MainActivity.class); 
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         startActivity(intent); 
         Log.e("order", "forth"); 
         break; 
        } 
        case Utils.READ_ACTIONS_DATA: { 
         readActionData(); 
         break; 
        } 
        case Utils.READ_PERSONS_DATA: { 
         readPersonsData(); 
         break; 
        } 
       } 
      } 
      stopSelf(msg.arg1); 
     } 
    } 

    @Override 
    public void onCreate() { 
     // Start up the thread running the service. Note that we create a 
     // separate thread because the service normally runs in the process's 
     // main thread, which we don't want to block. We also make it 
     // background priority so CPU-intensive work will not disrupt our UI. 
     HandlerThread thread = new HandlerThread("ServiceStartArguments"); 
     thread.start(); 

     // Get the HandlerThread's Looper and use it for our Handler 
     mServiceLooper = thread.getLooper(); 
     mServiceHandler = new ServiceHandler(mServiceLooper); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     Log.e("service","service started"); 

     Log.e("data",intent.getStringExtra(Utils.INTENT_SERVICE_INVOKE)); 

     Bundle bundle = new Bundle(); 
     bundle.putString(Utils.INTENT_SERVICE_INVOKE,intent.getStringExtra(Utils.INTENT_SERVICE_INVOKE)); 

     // For each start request, send a message to start a job and deliver the 
     // start ID so we know which request we're stopping when we finish the job 
     Message msg = mServiceHandler.obtainMessage(); 
     msg.arg1 = startId; 
     msg.setData(bundle); 
     mServiceHandler.sendMessage(msg); 

     // If we get killed, after returning from here, restart 
     return START_STICKY; 
    } 


    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show(); 
    } 

    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 
+0

saveActivities內的活動( ); savePersons(); savePictureData();這些方法是否返回任何值。如果不是你能做到這一點 –

+0

他們,不返回任何值,i'l嘗試在一個小時,但它怎麼可能改變behavoiur? – Turbozanik

+0

@jiteshmohite我加入的返回值,沒有什麼chaged。 – Turbozanik

回答

0

如果這些奎雷斯返回任何值插入數據庫之後,那麼只有你擁有發射活動

   saveActivities(); 
       savePersons(); 
       savePictureData(); 

試試下面的代碼啓動主線程處理器

Handler handler = new Handler(Looper.getMainLooper()); 
        handler.post(new Runnable() { 
         @Override 
         public void run() { 
           Intent intent = new Intent(context, MainActivity.class); 
          intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
          startActivity(intent); 
         } 
        }); 
+0

沒有更改,使用數據庫的正確方法是什麼?我曾試圖查詢使用AsyncLoader數據庫,但即使我開始內部onFinishLoad活動,我的活動是空的反正。 – Turbozanik

+0

你可以發佈你的活動和清單,以便我可以嘗試在我的結尾 –

+0

在這裏去整個項目https://drive.google.com/open?id=0B-pbp_K-xNkEZjVibWphZ2ZNRnM – Turbozanik