我有两节课。一个使用Thread,另一个使用活动。
public class MainActivity extends Activity
{
public void incrementCounter(int amount)
{
counter += amount;
Log.d("WHY", "why you no print");
}
}
然后在“活动”中使用计数器以满足其所需的一切。
实现Thread的另一个类是:
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);
实际上从未运行过。 引用不是空的,并且指向正确的活动。我没有发布这部分代码,因为它是微不足道的,不会帮助任何人,但浪费你的时间。
如何确保我的线程调用活动?
答案 0 :(得分:0)
您可以将incrementCounter()
静态设置为SilentKiller所说的并通过一些Handler或RunOnUIThread在UIThread中调用它,因为MainActivity来自UIThread,这可能会导致后台线程出现问题。
somethinglike:
runOnUiThread(new Runnable()
{
public void run()
{
reference.incrementCounter(count);
}
}
AND
public static void incrementCounter(int amount)
{
// do your code
}
再次检查你的计数逻辑。
答案 1 :(得分:-1)
Activity referance obj始终为null。
public class ScoreSystem implements Runnable
{
private int count = 0;
private MainActivity reference;
public ScoreSystem(MainActivity reference) {
this.reference = 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++;
}
}
}