如果在android 4.x中运行合成模式,则如何处理屏幕方向更改

如果在android 4.x中运行合成模式,则如何处理屏幕方向更改,第1张

概述我试图实现以下代码来处理屏幕方向更改. ****DataBaseUpdateService.java****public class DataBaseUpdateService extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreat 我试图实现以下代码来处理屏幕方向更改.
****DataBaseUpdateService.java****public class DataBaseUpdateService extends Activity {    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         Updatetask Task = new Updatetask(this.getApplicationContext());            if(Task.getStatus() == AsyncTask.Status.PENDING){            Task.execute();};    }    @OverrIDe    public voID onConfigurationChanged(Configuration newConfig) {        super.onConfigurationChanged(newConfig);    }    @OverrIDe    public voID  onPause() {        super.onPause();    }    @OverrIDe    public voID onResume() {        super.onResume();    }}

================================================== ========================

****AndroIDmanifest.xml**** <activity   androID:name=".DataBaseUpdateService"  androID:configChanges="keyboardHIDden|orIEntation"/>

这些代码与androID 3.x或更低版本完美匹配.但是,它不能正常工作的androID 4.x.

你有什么问题吗?

解决方法 解决方案1 ​​ – 如果您真的需要一个AsyncTask,请考虑两次.
解决方案2 – 将AsyncTask放入片段.
解决方案3 – 锁定屏幕方向
解决方案4 – 防止活动重新创建.

参考:http://androidresearch.wordpress.com/2013/05/10/dealing-with-asynctask-and-screen-orientation/

…..
发生问题的原因是当配置更改时重新创建活动,如方向更改等.
您可以锁定asyntask的onPreExecuted()方法中的方向更改,并在onPostExecuted()方法中解锁它.

import androID.app.Activity;import androID.content.Context;import androID.content.pm.ActivityInfo;import androID.content.res.Configuration;import androID.os.AsyncTask;import androID.Widget.button;import androID.Widget.Progressbar;public class MyAsyncTask extends AsyncTask<VoID,Integer,VoID> {private Context context;private Progressbar progressbar;private button button;public MyAsyncTask(Progressbar progressbar,Context context,button button){    this.context=context;    this.progressbar=progressbar;    this.button=button;}private voID lockScreenorIEntation() {    int currentOrIEntation =context.getResources().getConfiguration().orIEntation;    if (currentOrIEntation == Configuration.ORIENTATION_PORTRAIT) {        ((Activity)      context).setRequestedOrIEntation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);    } else {        ((Activity) context).      setRequestedOrIEntation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);    }}private voID unlockScreenorIEntation() {    ((Activity) context).     setRequestedOrIEntation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);}@OverrIDeprotected voID onPreExecute() {    // Todo auto-generated method stub    super.onPreExecute();    progressbar.setMax(100);    button.setEnabled(false);    lockScreenorIEntation();}@OverrIDeprotected VoID doInBackground(VoID... params) {    // Todo auto-generated method stub    for(int i=0;i<=100;i++){    try {        Thread.sleep(200);    } catch (InterruptedException e) {        // Todo auto-generated catch block        e.printstacktrace();    }    publishProgress(i);    }return  null;   }@OverrIDeprotected voID onProgressUpdate(Integer... values) {    // Todo auto-generated method stub    super.onProgressUpdate(values);    progressbar.setProgress(values[0]);}@OverrIDeprotected voID onPostExecute(VoID result) {    // Todo auto-generated method stub    super.onPostExecute(result);    button.setEnabled(true);    unlockScreenorIEntation();}}
总结

以上是内存溢出为你收集整理的如果在android 4.x中运行合成模式,则如何处理屏幕方向更改全部内容,希望文章能够帮你解决如果在android 4.x中运行合成模式,则如何处理屏幕方向更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存