Android App可在设备上启动所有已安装的应用

时间:2012-04-06 21:20:58

标签: android launch

我正在开发一个测试应用程序,它将一个接一个地连续启动设备上的每个应用程序。该应用程序主要用于通过上下文切换进行UI稳定性测试。我是Android的新手并试图弄清楚我将深深感谢任何建议

这是我的应用程序假设: -

  1. 查询设备并获取设备上所有应用的列表
    包括系统应用程序
  2. 现在一个接一个地启动每个应用,直到启动设备上的所有应用
  3. 一旦完成列表一次,它就会从列表中的第一个应用程序重新开始

    让我的应用程序调用Launcher_app,并说设备上有5个应用程序A,B,C,D,E .Launcher应用程序将按顺序启动A,然后启动B,C,D,E并通过启动A再次启动。这将一直持续到用户手动存在启动器应用程序

  4. 我试图实现这个应用程序,但我对android系统如何允许这样的上下文切换有几个问题。

    这是一个自动启动每个应用的代码段

    ublic Runnable AutoLaunch = new Runnable(){

    public void run()
    {
    
       while(AppIndex < mAppsList.getCount())
       {
    
    
           //get the app name using index AppIndex
           //launch app using the appname
          App app = (App) mAppsList.getItemAtPosition(AppIndex);
         Intent i = getPackageManager().getLaunchIntentForPackage(app.getPackageName());
           try 
              {
                 if (i != null) 
                 {
                    startActivity(i);
    
                 } 
                 else 
                 {
                    i = new Intent(app.getPackageName());
                    startActivity(i);
    
                 }
                 for(int j=0;j<2000;j++)
                     for(int k=0;k<10000;k++)
                         continue;
                 finish();
    
              } 
              catch (ActivityNotFoundException err) 
              {
                 //Toast.makeText(ListInstalledApps.this, "Error launching app", Toast.LENGTH_SHORT).show();
              }
    
        if(AppIndex == mAppsList.getCount()-1)
              AppIndex = 0;
          else                
              AppIndex++;
    
       }
    

    这是我的不妥协: -

    Launcher应用程序将在最开始处于前台(FG)。 然后app A来到Forground n Launcher_app将进入后台(BG)。 现在应用程序B来到FG,应用程序A与Launcher应用程序一起进入BG。 继续这种方式,应用程序E出现在FG中,而其他应用程序(包括Launcher应用程序)都在BG中。

    当我尝试使用上面的实现运行应用程序时,我看到应用程序已启动,但应用程序顺序是randopm,此外,我看不到设备启动时的应用程序,可能它发生得太快了....肯定。我不想继续,直到我知道我走在正确的轨道上

    在下一次迭代的情况下,Launhcer应用程序将按顺序恢复应用程序A,B,C,D,E还是会重新启动每个应用程序?如果系统在实际场景中需要内存,Launcher app也会被杀死其中有近50个应用程序在他的设备上运行BG.Or系统将保持我的应用程序活着,因为这是主要应用程序启动所有其他应用程序。

    请帮助我理解它是如何工作的,因为我真的很想知道这样的应用程序是否可行?解决上述问题的最佳方法是什么。请关注任何指针/建议。

    由于 迷你

1 个答案:

答案 0 :(得分:1)

这是什么:

for(int j=0;j<2000;j++)
    for(int k=0;k<10000;k++)
        continue;

如果你只是试图引入延迟,你可以简单地睡一会儿或使用类似postDelayed之类的东西来隔开电话。

我同意您的猜测,即应用程序启动过快。你基本上是一次性推出所有这些,所以你会看到似乎是随机顺序(由于不同的启动时间),有些甚至没有时间在另一个人抓住焦点之前显示他们的UI。

修复你的延迟代码,其中大部分应该更好。