处理方向变化的服务

Handle Services in orientation change

我的应用程序中有两项服务,一项用于 CountDownTimer,一项用于 Window 经理。我的主要 activity 是

public class MainActivity extends ActionBarActivity {

    // Variables


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       // some code here

    }



// Broadcase reciever for Countdown Timer
    private BroadcastReceiver br = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            updateGUI(intent); // or whatever method used to update your GUI
                                // fields
        }
    };

    private void updateGUI(Intent intent) {
        if (intent.getExtras() != null) {
            long millisUntilFinished = intent.getLongExtra("countdown", 0);
            HeadService.textView.setText("" + millisUntilFinished / 1000);
            Log.i("YOLO", "Countdown seconds remaining: " + millisUntilFinished
                    / 1000);
        }

    }


// Registrating and Starting services in onStart()
    @Override
    public void onStart() {
        // TODO Auto-generated method stub

        super.onStart();
        startHeadService();

        registerReceiver(br, new IntentFilter(BroadcastService.COUNTDOWN_BR));

        Log.i("Check", "Registered broacast receiver");
    }

    @Override
    public void onResume() {
        super.onResume();

    }

    @Override
    public void onPause() {
        super.onPause();

    }

    @Override
    public void onStop() {
        try {
            unregisterReceiver(br);
            stopHeadService();
        } catch (Exception e) {
            // Receiver was probably already stopped in onPause()
        }
        super.onStop();
    }

    @Override
    public void onDestroy() {
        stopService(new Intent(this, BroadcastService.class));
        stopHeadService();
        Log.i("Check", "Stopped service");
        super.onDestroy();
    }

    private void startHeadService() {

        startService(new Intent(this, HeadService.class));
    }

    private void stopHeadService() {

        stopService(new Intent(this, HeadService.class));
    }
}

每当我改变方向时,我的服务都会停止,新服务会重新开始。所以基本上我想知道的是从哪里开始和停止我的服务,这样它即使在方向改变时也能保持 运行。我也知道 activity 生命周期从这里 Which activity method is called when orientation changes occur? 开始改变方向,我只是不知道我应该做什么。提前致谢。

当您更改 activity.

的方向时,将调用

onCreate() 方法

为避免这种情况,请将以下代码添加到清单文件中的 activity 中:

... android:configChanges="orientation|screenSize"