处理方向变化的服务
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"
我的应用程序中有两项服务,一项用于 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? 开始改变方向,我只是不知道我应该做什么。提前致谢。
onCreate() 方法
为避免这种情况,请将以下代码添加到清单文件中的 activity 中:
... android:configChanges="orientation|screenSize"