【发布时间】:2019-11-01 20:42:40
【问题描述】:
我想更新一个不是 MainActivity 的 Activity。
所以我通过 MainActivity 中的 onClick 方法启动了第二个 Activity。
现在活动“SecondActivity”在前面。 当我在“MainActivity”中启动一个线程时,如何引用“SecondActivity”来更新他们的 TextViews 等等?
伪代码
public class activity_MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ThreadSome threadSome= new ThreadSome();
threadSome.start()
}
onClick(View View){
Intent intent = new Intent(this, activity_Second.class);
startActivity(intent);
}
}
内线
public class ThreadSome extends Thread {
@Override
public void run() {
//This is what I don't know, so I just write what I want to do.
// I know the following Code is wrong and not working.
activity_Second.someTextView.setText("Hi");
}
}
WeakReference 是最好的方法,还是更好地使用静态 TextView 对象?你会如何解决这个问题?
【问题讨论】:
-
second activity在运行时是什么意思,您只有一个活动来更新 ui 。其他活动可能永远不会创建或处于暂停/停止状态。所以没有要更新的ui。您可以在需要启动时通过意图将数据传递给它 -
我不明白。我制作了一个弹出窗口并将其创建为一个活动。只有一个 Activity 正在运行,但它不是我认为的 MainActivitiy 还是我完全错了?
-
最好阅读android生命周期以避免这种混乱和浪费你和其他人的时间
-
这对我没有帮助。我读到了这个,但我的问题没有任何显示。当我通过一个意图启动一项活动时,这是唯一一个正在运行的活动。但是我该如何改变让我们在这个活动中说一个 TextView?
-
如果您能更详细地解释您需要做什么,也许会有所帮助。具体有哪些变化? Activity 之间的通信可以通过 Intent 进行,方法是传递在创建新 Activity 时解绑的数据包,甚至使用接口/回调方法。在我看来,如果您使用 startActivityForResult 并从结果意图中获取重要数据,您也可以做您想做的事情。尝试更具体地说明您的问题,我相信您会找到很多选择,而不必费心处理线程。
标签: android multithreading android-activity