Android系统切换语言更新应用界面方法

最近做的一个升级应用,在下载升级包的过程中又有一个toast类型的dialog悬浮在屏幕右上角,这个时候切换系统语言会出现问题。

当主屏幕为升级应用时,切换系统语言升级应用重启,而重启后并不能自动断点续传切换前的下载进度;当主屏幕为launcher的时候,切换系统语言进度条上的提示语言并不能跟着切换;

解决这一问题主要分为以下几步:

1.设置系统切换语言不重启属性,在menifest的activity中设置 android:configChanges="locale|layoutDirection",切换语言可以避免应用被系统重启,否则将会中断下载;

2.实现进度条服务监听语言切换广播后刷新语言功能,ACTION_LOCALE_CHANGED;下载和界面刷新是两个线程,因此该步骤主要负责界面刷新服务重新刷新界面,达到语言同步切换目的;

3.实现updateActivity回调onConfigurationChanged,重新设置界面语言。

@Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//系统语言改变回调,由于设置了切换语言不重启属性(保障下载不中断),因此需要重设界面语言
Log.d("yj", "=========================onConfigurationChanged....");
TextView TextView01 = (TextView) findViewById(R.id.TextView01);
TextView01.setText(R.string.sysupdate_soft);
TextView TextView02 = (TextView) findViewById(R.id.TextView02);
TextView02.setText(R.string.localupdate);
TextView TextView03 = (TextView) findViewById(R.id.TextView03);
TextView03.setText(R.string.networkupdate);

};

这三步同时做好会完美解决该问题,写此贴记录一下。

时间: 2024-11-10 15:12:14

Android系统切换语言更新应用界面方法的相关文章

Android系统切换语言的时候APP无法更新资源文件的解决方法

你的APP支持多语言环境,假如它正在后台运行,此时用户去更换系统语言,等系统语言换好后直接从后台打开它,此时用户会发现你的界面语言没有和系统语言保持一致:为什么?主要是界面资源没有重新加载 如果你是属于自己在APP内设置语言切换,那么就可以直接在你设置切换的那个activity里做处理,重新启动一次该activity就可以了,但是如果你的APP和我类似本身是没有切换语言功能的,只是跟随系统的,那么你不可能在所有的activity里处理吧!所以我这里就直接在application中重新启动一次ap

〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)

Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 import os, sys, getopt 5 import xml.dom.minidom 6 import subprocess 7 from xml.dom.minidom import Node 8 9 # 判断是否是App项目依据 10 Axml='AndroidMan

Android系统默认语言改为中文

第一种方法: 修改 build/tools/buildinfo.sh echo "ro.product.locale.language=zh"echo "ro.product.locale.region=CN" 就可以修改Android系统默认语言为中文. 第二种方法: build/target/product/full_base.mk修改PRODUCT_LOCALES := zh_CN 就OK.

Android SDK无法显示更新列表解决方法

解决办法: 第一步: 打开Windows中C:\WINDOWS\system32\drivers\etc\hosts,然后添加以下内容: 203.208.46.146 dl.google.com 203.208.46.146 dl-ssl.google.com 74.125.113.121 developer.android.com 第二步: 打开Android SDK Manager,选上方的菜单Tools,进入Options,在"Force https://- "前面打钩,就可以更

如何使用android系统隐藏hide的类和方法

如何使用android系统隐藏hide的类和方法 欢迎访问 wxtlife.com 在应用开发过程中,可能会需要使用到系统的方法,比如:SystemProperties 以及系统隐藏hide的方法和类,比如:Android 4.2中的 Surface.screenshot(x,y)方法是隐藏的, Android 4.3后面上面的那个方法变成了SurfaceControl.screenshot(x,y) 并且SurfaceControl这个类也变成了隐藏的了.那么要直接在eclipse或者andr

android子线程中更新UI的方法

在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 参考:Android子线程 方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: //

Android线程间通信更新UI的方法(重点分析EventBus)

Android的UI更新只能在UI线程中,即主线程.子线程中如果要进行UI更新,都是要通知主线程来进行. 几种实现方式总结如下,欢迎补充. 1.runOnUiThread() 子线程中持有当前Activity引用(假如为Activity mActivity;),即可以调用mActivity的runOnUiThread(Runnable r)方法. 2.post()和postDelay() 子线程如果持有某个View的引用,要对该View进行更新,则可调用该View对象的post(Runnable

Android——Listview不用notifydatasetchanged更新数据的方法

一.介绍 先来介绍一下listview更新数据的几种方法,目前我知道的方法有如下几种: 1. 每次更新数据时都调用listview.setadapter(); 2. 每次更新数据时都调用adapter.notifydatasetchanged(): 3. 在自定义的adapter里添加更新函数update; 博客撰写人:It一zhai男 转载请标明地址:http://blog.csdn.net/u013293125/article/details/52858396 这里,我们将会一个一个来介绍,

android系统特效详解和修改方法

安卓系统特效相关文件:  存在于:framework-res.apk   反编译后的\framework-res\res\anim文件夹内!anim文件夹下所有的文件都是特效文件原理  反编译framework-res.apk 替换anim文件夹下的文件达到修改特效的目的!然后再重建framework-res.apk替换到手机,修改权限重启 特效文件名称.xml 对应的相关特效 fade_out 最近任务  下滑状态栏的日期 移除 fade_in 最近任务  下滑状态栏的日期 移除 status