私は現在、アクティビティの最後にいくつかの単純な変数を計算し、次のアクティビティの開始時にそれらをサーバーにアップロードするアプリを開発しています。
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fairwell);
setTimer();
}
@Override
public void onResume(){
super.onResume();
is_active = true;
Log.d(TAG, "onResume enter FA");
//Download Variable Ids start
int WeightId = postmeasurements.getStatisticId(postmeasurements.mHCAW);
int BFPId = postmeasurements.getStatisticId(postmeasurements.mHCABFP);
int HydId = postmeasurements.getStatisticId(postmeasurements.mHCAHyd);
int MuscMass = postmeasurements.getStatisticId(postmeasurements.mHCAMM);
//Download Variable Ids End
Log.w("ANTApp", "WeightId is: " + WeightId);
Log.w("ANTApp", "BFPId is: " + BFPId);
Log.w("ANTApp", "HydId is: " + HydId);
Log.w("ANTApp", "MuscMass is: " + MuscMass);
//Post Measurements to Server Start
postmeasurements.postScaleMeasurements(WeightId, PostMeasurements.Weight);
postmeasurements.postScaleMeasurements(BFPId, PostMeasurements.BFP);
postmeasurements.postScaleMeasurements(HydId, PostMeasurements.Hyd);
postmeasurements.postScaleMeasurements(MuscMass, PostMeasurements.MuscMass);
//Post Measurements to Server End
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 112.0f;
getWindow().setAttributes(lp);
setTimer();
Log.d(TAG, "onResume exit FA");
}
ここで私が抱えている問題は、すべての測定値がアップロードされるまで、各アクティビティの間に黒い画面が表示されることです。ダウンロードとアップロードの各メソッドは、Httppost を使用して独自のバックグラウンド スレッドで実行されます。
public void postScaleMeasurements(int StatId, double Value){
//int Id = 0;
String result = "";
//the serial data to send
final ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("s", mDeviceId));
nameValuePairs.add(new BasicNameValuePair("statisticId", Integer.toString(StatId)));
nameValuePairs.add(new BasicNameValuePair("userId", Integer.toString(mHCAId)));
nameValuePairs.add(new BasicNameValuePair("statisticValue", Double.toString(Value)));
InputStream is = null;
Thread PostScaleData = new Thread(){
public void run(){
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://www.website.com/app/postStatisticValue.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
streamresponse = entity.getContent();
}catch(Exception e){
Log.e(TAG, "Error in http connection (verifytablet) "+e.toString());
}
}
};
PostScaleData.start();
try {
PostScaleData.join(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
まだ約 1 ~ 4 秒間、黒い画面が表示されます。私が本当に望んでいるのは、測定値がアップロードされる前にレイアウト描画プロセスが終了することです.
皆様のすばらしいご支援をよろしくお願いいたします。