我正在开发一个测试应用程序,它将一个接一个地连续启动设备上的每个应用程序。该应用程序主要用于通过上下文切换进行UI稳定性测试。我是Android的新手并试图弄清楚我将深深感谢任何建议
这是我的应用程序假设: -
一旦完成列表一次,它就会从列表中的第一个应用程序重新开始
让我的应用程序调用Launcher_app,并说设备上有5个应用程序A,B,C,D,E .Launcher应用程序将按顺序启动A,然后启动B,C,D,E并通过启动A再次启动。这将一直持续到用户手动存在启动器应用程序
我试图实现这个应用程序,但我对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系统将保持我的应用程序活着,因为这是主要应用程序启动所有其他应用程序。
请帮助我理解它是如何工作的,因为我真的很想知道这样的应用程序是否可行?解决上述问题的最佳方法是什么。请关注任何指针/建议。
由于 迷你
答案 0 :(得分:1)
这是什么:
for(int j=0;j<2000;j++)
for(int k=0;k<10000;k++)
continue;
如果你只是试图引入延迟,你可以简单地睡一会儿或使用类似postDelayed
之类的东西来隔开电话。
我同意您的猜测,即应用程序启动过快。你基本上是一次性推出所有这些,所以你会看到似乎是随机顺序(由于不同的启动时间),有些甚至没有时间在另一个人抓住焦点之前显示他们的UI。
修复你的延迟代码,其中大部分应该更好。