0

アクティビティでサービスを初期化した直後に、アプリケーションが黒い画面になりました。エラーまたは警告メッセージは表示されませんでした。しばらくすると、アプリケーションはすでに応答しておらず、時間制限が過ぎてもサービスはサーバーに情報を更新しませんでした. このサービスを使用して、1 分ごとにユーザーの位置情報を常にサーバーに送信したいと考えていました。アクティビティでサービスが初期化されます。AndroidManifest.xml にもサービスを含めました。

LocationService 以下のコードは、サービスの私の構造です

public class LocationService extends Service{

@Override

public IBinder onBind(Intent arg0){
    return null;
}


private String TAG = "LocationService";


@Override
public void onCreate(){
    super.onCreate();
            boolean isUpdateResult = true;

    try{
        while(isUpdateResult){

             new CountDownTimer (60000, 1000) {



                 public void onTick(long millisUntilFinished) {

                 }

                 public void onFinish() {
                   //Send information to server                          

                }.start();
        }
    }
    finally{

    }
}

@Override
public void onDestroy(){
    super.onDestroy();
}
}

以下は、メインのアクティビティでサービスを呼び出す方法です。

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display_screen);

    startService(new Intent(Web_Slider.this,
            LocationService.class));
    }

黒い画面の原因は何ですか?ここで何かを逃しましたか?どんなコメントでも大歓迎です!前もって感謝します。

4

1 に答える 1

0

私はこれを解決することができました。どうやらnew CountDownTimer (60000, 1000)ループの最初に実行すると、画面が黒画面に変わります。間違っていなければ、常に新しい CountDownTimer を作成すると、正常に機能できなくなります。それを置く正しい方法は、While(isUpdateResult)を取り除くことです。.start(); があるため、関数は常にカウント ダウン タイマーを開始します。onFinish();の後。そのため while ループは必要ありません。

         new CountDownTimer (60000, 1000) {



             public void onTick(long millisUntilFinished) {

             }

             public void onFinish() {
               //Send information to server                          

            }.start();
于 2012-12-14T09:25:09.917 に答える