退出重进程序,TextView不可见(不显示)问题(极少情况下遇到)

在项目中,在线程中获取信息,然后通过handler传递,在handler的handleMessage方法中处理信息并且用一个TextView把信息显示出来。

demo版本代码:

public class DemoActivity extends Activity implements OnClickListener{private Button mButton;private TextView mTextView;public static int i = 0;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mButton = (Button)findViewById(R.id.button);mButton.setOnClickListener(this);mTextView = (TextView)findViewById(R.id.textView);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button:changeTextView();break;default:break;}}Handler mHandler = new Handler(new Handler.Callback() {@Overridepublic boolean handleMessage(Message msg) {mTextView.setText("i = " + i++ + ", j = " + msg.arg1);return true;}});private void changeTextView() {new Thread(new Runnable() {@Overridepublic void run() {int j = 0;try {while (j < 5) {j++;Message msg = Message.obtain();msg.arg1 = j;mHandler.sendMessage(msg);Thread.sleep(2000);}} catch (InterruptedException e) {e.printStackTrace();}}}).start();}}情况近似于上面demo代码,但是上面代码中没有出现下面将要说到得问题。在我的项目代码中,第一次装上应用,完全没有问题,handler传递消息,handlerMessage方法处理消息,然后可以在TextView中显示出来。但是,当按返回键退出程序后,再一次进入,通过handler传递消息,在handlerMessage方法中处理消息,在log显示,可以获取消息,但是TextView却不能显示。使用以下代码打印Log:if (mResultText.isShown()) {Log.v("@@@@@@", "mResult is shown in @@@@@");} else {Log.v("@@@@@@", "mResult is not shown in @@@@@");}执行Log.v("@@@@@@", "mResult is not shown in @@@@@");也就是说,当再次进入程序后,mResultText(一个textview) isShown方法返回false,,不可见。

设置为可见:

mResultText.setVisibility(View.VISIBLE);也不起作用。

解决方法:

把mResultText设为静态:

private static TextView mResultText;问题解决,但是其中原理还不明白。如果有清楚原因者,望相告,谢谢(注:Activity的launchMode="singleInstance")。同时,这个问题应该很少会有人遇到。

黄色蓝色或者砖红色,犹如童话世界。

退出重进程序,TextView不可见(不显示)问题(极少情况下遇到)

相关文章:

你感兴趣的文章:

标签云: