我有一个调用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/

10-11 00:11