我有一个调用startService(intent)的活动,并且在他的onStatCommand()方法中创建了一个线程,该线程每秒检查一次正在运行的应用程序。
问题在于该线程限制了活动的创建,并且该屏幕仅显示白屏。如果我删除线程中的for(;;)陈述,它将起作用。为什么?
这里是onStartCommand()代码:
@Override
public int onStartCommand(Intent intent,int flags,int startid)
{
super.onStartCommand(intent,flags,startid);
final Thread thread= new Thread(){
@Override
public void run()
{
Context context = getApplicationContext();
for(;;) {
long current = System.currentTimeMillis();
UsageStatsManager usageStatsManager = ((UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE));
for (UsageStats usageStats : usageStatsManager.queryAndAggregateUsageStats( current - 1000*2, current).values()) {
Log.i("Path changed name",usageStats.getPackageName());
if(usageStats.getPackageName()=="com.android.chrome")
{
Log.i("Path name",usageStats.getPackageName());
stopSelf();
break;
}
}
try {
currentThread().sleep(1000);
}catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
};
thread.run();;
return 0;
}
最佳答案
线程代码有问题,您应该调用Start方法来启动一个新的未运行的线程。
问题代码:
thread.run();
固定代码:
thread.start();
关于android - 带循环服务卡住 Activity ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40447783/