【发布时间】:2014-09-22 06:20:16
【问题描述】:
我有两节课。一个使用Thread,另一个使用Activity。
public class MainActivity extends Activity
{
public void incrementCounter(int amount)
{
counter += amount;
Log.d("WHY", "why you no print");
}
}
然后在 Activity 中使用计数器来满足它的需要。
另一个实现线程的类是这样的:
public class ScoreSystem implements Runnable
{
private int count = 0;
private MainActivity reference;
public void run()
{
Looper.prepare();
while(true)
{
if(count >= 100 && reference != null)
{
//gets inside the if statement just fine
reference.incrementCounter(count);
count = 0;
}
count++;
}
}
}
问题是reference.incrementCounter(count); 从未真正运行过。 引用不为空,并且指向正确的活动。我没有发布那部分代码,因为它很琐碎,不会帮助任何人,而是浪费你的时间。
如何确保我的线程调用 Activity?
【问题讨论】:
-
有两种解决方案。您需要在 Thread 类中引用 MainActivity ,否则您需要将
incrementCounter方法创建为静态。 -
我有参考。如果我将
incrementCounter()移到线程之外,那么它可以工作,但不能在线程内部。 -
你没有初始化或分配任何东西给
MainActivity reference; -
我没有发布它以保持问题简短。我知道参考没问题。相信我,引用不为空,并且指向正确的活动。
-
也许你可以试试:new Handler(Looper.getMainLooper()).post(new Runnable(){reference.incrementCounter(count);});
标签: java android multithreading android-activity