为什么我不能杀死我开始使用killBackgroundProcesses的Activity?

时间:2012-04-14 17:58:51

标签: android android-intent

好的,我很难过: - (

作为一项实验,我一直在尝试启动一个Activity,然后稍后使用ActivityManager包中的killBackgroundProcesses将其关闭。我没有收到任何错误。它似乎没有做任何事情。

以下代码的范围缩小了我能得到的数据。就像测试一样,我启动Activity(成功)然后当我的onPause方法被调用时,我尝试并停止我刚刚开始的(在我的真实代码中,这发生得更晚)。

打字这个,我想到也许在当前屏幕上的Activity上使用killBackgroundProcesses可能没有意义。如果是这样,还有其他方法可以阻止此活动吗?我没有其他应用程序的源代码,我启动了它,现在我只想让它消失。而且我也意识到这不是一个正常的Activity生命周期行为,但至少现在,这对我来说是一个特例。

我很欣赏任何见解或解决方案。

谢谢!

清单:

...
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
...

代码:

public class MainActivity extends Activity
{
    static String PACKAGE = "com.abc.def";

    ...

    Intent i = getPackageManager().getLaunchIntentForPackage( PACKAGE );
    startActivity( i );
    ...

    @Override
    protected void onPause()
    {
        // just to see if we can, kill the activity we just started
        ActivityManager manager =  (ActivityManager)getApplicationContext().getSystemService( Context.ACTIVITY_SERVICE );

        manager.killBackgroundProcesses( PACKAGE );     
    }
}

1 个答案:

答案 0 :(得分:1)

仅允许Android框架(内部系统或合作伙伴rom开发人员,如HTC,Samsung等)调用 killBackgroundProcesses ,而不允许第三方应用程序。相反,您应该在活动的 onPause onStop 方法上调用finish();,以便在屏幕离开时自动将其销毁。