我有一个我已经开始服务的活动。该服务以横向模式显示布局。我的问题是,如果服务以横向模式显示任何内容,活动也会进入横向模式,如果服务布局进入纵向模式,活动布局也会进入纵向模式。我只是想停止活动进入横向模式,而服务在横向模式下做一些事情。我只想在纵向模式下保留活动。我试过通过清单,但没有运气。有没有解决方案?
答案 0 :(得分:0)
服务没有任何layout
或用户界面。阅读Android doc
服务是一个可以执行长时间运行的应用程序组件 在后台运行,它不提供用户 接口。另一个应用程序组件可以启动服务 即使用户切换到后台,也会继续在后台运行 另一个应用。此外,组件可以绑定到服务 与它交互甚至执行进程间通信(IPC)。 例如,服务可以处理网络事务,播放音乐, 从中执行文件I / O或与内容提供商进行交互 背景
你可能有2个活动并且为了控制方向,有很多SO线程已经像: -
Android - disable landscape mode?
How do I disable orientation change on Android?
答案 1 :(得分:0)
服务在后台长时间运行的操作中执行。它没有用户界面。
答案 2 :(得分:0)
您不必担心服务。
如果您想保持特定活动的永久视图,那么
在清单中,为启动服务的活动
设置此项<activity android:name=".YourActivity"
android:configChanges="orientation"
android:screenOrientation="landscape"/> // or portrait
或 对于条件情况(临时)你可以做
if(isServiceStarted){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
if(isServiceEnded){
//flip to original view
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
我希望它对你有用。
更新了Ans
方向改变时会发生什么 定向生命周期
onPause();
onSaveInstanceState();
onStop();
onDestroy();
onCreate();
onStart();
onResume();
制作2种方法
void changeToLandscape(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
void changeToPro(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
现在想要旋转视图
onCreate(){
// start service here and rotate view
changeToLandscape();
}
然后它将进入onResume()
void onResume(){
super();
if(isServiceOn){
changeToLandscape()
}
else{
changeToPro()
}
}
void onPause(){
super();
if(isServiceOn){
changeToLandscape()
}
else{
changeToPro()
}
}