如何更改图像并在 5 秒后重新运行线程中的主要活动后不回到 android 中的基本布局
Posted
技术标签:
【中文标题】如何更改图像并在 5 秒后重新运行线程中的主要活动后不回到 android 中的基本布局【英文标题】:How do I change image and after rerunning the main activity in the thread after 5 sec not go back to the basic layout in android 【发布时间】:2016-06-29 23:40:51 【问题描述】:所以我正在创建一个应用程序,从我的AsyncTask
中获取字符串,该字符串是我在MainActivity
类中创建的子类,以便获取从互联网接收到的变量。根据我得到的变量,我每 5 秒后相应地更改图像。现在任务成功了,但在活动刷新时,我不断获得我在activity_main.xml
中创建的默认布局,并再次更改为我想要的布局。
在下面发布我的代码。
Thread thread = new Thread() //thread I am running every 5 secs
@Override
public void run()
try
synchronized (this)
wait(5000);
syncapp sa = new syncapp(); //AsyncTask to get String from Internet
sa.execute();
catch (InterruptedException e)
e.printStackTrace();
Intent mainActivity = new Intent(getApplicationContext(), MainActivity.class); //Creating intent to restart the activity (Need a workaround if possible)
startActivity(mainActivity);
;
;
thread.start();
public void setImage(String str) //Function I will call to change Image
vacancy =0;
b = a.toCharArray();
for (int i = 0; i < 6; i++)
if (b[i] == '0')
iv[i].setImageResource(R.drawable.img2);
vacancy++;
else if (b[i] == '1')
iv[i].setImageResource(R.drawable.img1);
Log.i("abc ", a);
tv.setText("InBackGround" + str);
protected void onSaveInstanceState(Bundle outState)
super.onSaveInstanceState(outState);
/* for(int i =0;i<6;i++)
outState.putChar("imv"+(i+1), b[i]);
*/
outState.putString("a",a); //Getting a from the internet (php file)
Log.i("Saved State", "Activity A - Saving instance state");
-
现在我想要的是,如果你有更好的方法来做这件事。例如。在股票市场应用程序中,价格不断变化。就像我希望我的图像根据我得到的数据而改变一样。
如果这是唯一的方法,那么如何保存所做的更改
(例如,在上面的代码中
setImageResource
到 img2)永久。
如果我可以使用其他 ImageView。
我已经使用了onSaveInstanceState
,但是当我从互联网上获取值时,我不知道我无法使用它们。
【问题讨论】:
【参考方案1】:首先.. 在使用 UI 元素(如视图、小部件)时,您会希望避免产生自己的线程,因为只能从创建它的线程中触摸视图。
其次..您还希望避免在工作线程中休眠 - 基本上只需使用 Handler 类(来自 android.os)并发布延迟的 Runnable,如下所示:https://***.com/a/20784353/2102748。当您的 Activity 停止时,请务必停止对该特定处理程序的所有工作,如下所示:https://***.com/a/3627399/2102748
第三 - 如果这是您唯一需要的,您或许应该立即(在同一个 AsyncTask 或线程上)加载照片,但请务必将“设置位图以查看”工作发布到您创建的处理程序。
希望这会有所帮助。
【讨论】:
以上是关于如何更改图像并在 5 秒后重新运行线程中的主要活动后不回到 android 中的基本布局的主要内容,如果未能解决你的问题,请参考以下文章