1

わかりました、私は困惑しています:-(

実験として、Activity を開始してから、後で ActivityManager パッケージの killBackgroundProcesses を使用してシャットダウンしようとしました。エラーは発生しません。何もしないようです。

以下のコードは、取得できる範囲で絞り込まれています。テストとして、Activity を (正常に) 開始し、onPause メソッドが呼び出されたら、開始したばかりのものを停止しようとします (実際のコードでは、これはかなり後で発生します)。

これを入力すると、現在画面に表示されているアクティビティで killBackgroundProcesses を使用しても意味がない可能性があることがわかりました。もしそうなら、このアクティビティを停止する他の方法はありますか? 私はこの他のアプリのソースを持っていません。私はそれを起動しましたが、今はそれを消したいと思っています。また、これは通常のアクティビティ ライフサイクルの動作ではないことも認識していますが、少なくとも今のところ、これは私にとって特別なケースです。

洞察や解決策をいただければ幸いです。

ありがとう!

マニフェスト:

...
<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 );     
    }
}
4

1 に答える 1

1

killBackgroundProcessesの呼び出しは、Android フレームワーク (内部システムまたは HTC、Samsung などのパートナー ROM 開発者) に対してのみ許可され、サードパーティ アプリケーションでは許可されません。代わりに、finish();アクティビティのonPauseまたはonStopメソッドを呼び出して、アクティビティが画面から消えたときに自動的に破棄する必要があります。

于 2012-04-14T18:05:42.057 に答える