标签: activity-manager

从我的应用程序调用 ActivityManagerService 方法

我在有根设备上创建了一个系统应用程序,并想知道:有没有办法ActivityManagerService从该应用程序访问方法?

我试过使用该ActivityManager对象,但并非所有方法都存在于ActivityManagerService.

谢谢!

android rooted-device activity-manager

5
推荐指数
0
解决办法
379
查看次数

Android 中的 libprocessgroup 如何工作?

假设一个应用程序进程由 zygote 启动,PID 为 1234。当应用程序启动时,PID:1234 分叉另一个进程,例如 PID:1300。当我退出应用程序时,PID:1234 被信号 9 (SIGKILL )。PID: 1300 随后成为孤儿进程并被 init 进程 (PID: 1) 采用。很快,libprocessgroup 也会触发并杀死 PID:1300(作为 PID:1234 的进程组的一部分)。这是如何触发的?换句话说,libprocessgroup 何时突然介入以清理剩余进程?

android android-source activity-manager

5
推荐指数
0
解决办法
1916
查看次数

即使另一个活动在顶部,为什么带有 launchMode="singleTask" 的启动器活动总是被推到后台堆栈的顶部?

由于某些要求,我的启动器活动的 launchMode 属性设置为 singleTask。

<activity
    android:name=".map.MapsActivity"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"
    android:theme="@style/MapScreenTheme"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,如果我打开另一个活动 -> 按主页 -> 单击启动器应用程序中的应用程序图标 -> 它会打开 MapActivity 而不是之前打开的活动。

但是,如果我通过最近菜单导航到该应用程序,则不会发生这种情况。然后新打开的活动保持在顶部。

有人可以解释一下这里发生的关于 backstack 的事情,为什么 ActivityManagerService 没有考虑到应用程序进程已经存在,但决定启动启动器应用程序并清除 backstack 而不是简单地将应用程序向前推进?

可以在此处创建的一个小示例应用程序中观察到此问题 - https://github.com/abhiank/SingleTaskActivity

android launchmode android-launcher activity-manager

5
推荐指数
1
解决办法
1317
查看次数

如何获取android中所有非系统应用程序的列表

我正在开发一个应用程序,我希望获得所有非系统应用程序的列表.这是我的代码部分:

TextView tv = new TextView(this);
        this.setContentView(tv);

        ActivityManager actvityManager = (ActivityManager)
        this.getSystemService( ACTIVITY_SERVICE );
        PackageManager pm = this.getPackageManager();
        List<PackageInfo> list =pm.getInstalledPackages(0);

        for(int i=0;i<list.size();i++)
        {
            System.out.println("list"+i+"   "+list.get(i));
        }

        for(PackageInfo pi : list) 
        {
            try
            {
                ApplicationInfo ai=pm.getApplicationInfo(pi.packageName, 0);

                if (ai.sourceDir.startsWith("/data/app/"))
                {
                    tv.setText(ai.className);// non system apps
                }
                else 
                {
                     System.out.println("system apps");// system apps
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();

            }
        }
Run Code Online (Sandbox Code Playgroud)

但它显示,所有的应用程序作为系统应用程序

android activity-manager

4
推荐指数
1
解决办法
3810
查看次数

如何获取自己的应用程序的热门活动名称

MainActivity我想知道当前Activity在 App 内打开的 Top 。

对于前棒棒糖,我使用了以下内容

ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
Run Code Online (Sandbox Code Playgroud)

在我发现的其他帖子中,我应该使用:

getAppTasks() and gettaskinfo
Run Code Online (Sandbox Code Playgroud)

但是我找不到任何完整的示例来演示如何使用上述内容。任何帮助都是感激的。问候。

编辑:当前代码:

if (Build.VERSION.SDK_INT >= 23) {
      cn = am.getAppTasks().get(0).getTaskInfo().topActivity;
}else{
      cn = am.getRunningTasks(1).get(0).topActivity;
}
Run Code Online (Sandbox Code Playgroud)

am.getRunningTasks 在 API 21 中已弃用。 am.getAppTasks#topActivity 在 API 23 中可用。所以更新的问题是如何为 API 21 和 22 处理它。

java service android android-activity activity-manager

3
推荐指数
1
解决办法
3195
查看次数

检测另一个应用程序是否正在运行

是否可以在 Android 上检测另一个应用程序是否正在运行?当地图应用程序(如 Waze 或 Google 地图)运行时,我需要在我的应用程序中触发某些操作。

android activity-monitor activity-manager

2
推荐指数
1
解决办法
3583
查看次数

ActivityManagerCompat.isLowRamDevice没用,总是返回false

我想isLowRamDevice为我的应用程序使用帮助方法,它可以流式传输视频.当我支持设备关闭API级别15时,我不得不使用ActivityManagerCompat.isLowRamDevice().我真的很困惑,它总是返回假,即使我使用非常旧的设备.然后我检查了方法本身并看到了这个:

    public static boolean isLowRamDevice(@NonNull ActivityManager am) {
        if (Build.VERSION.SDK_INT >= 19) {
            return ActivityManagerCompatKitKat.isLowRamDevice(am);
        }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

所以难怪它总是在我的Android 4.0.4设备上返回false.但对我来说,这绝对没有意义.或者我错过了什么?

android activity-manager

2
推荐指数
1
解决办法
864
查看次数