ユーザーがタスクマネージャを介してreceiverを殺すことを回避する方法

780 ワード

従来、3.1以降、システムのpackage managerは「stopped state」アプリケーションの管理を追加した.このstoppedとActivityライフサイクルにおけるstop状態はまったく別で、インストール後に起動したことがないアプリケーションとユーザーに手動で強制的に停止されたアプリケーションを指し、同時にシステムは2つのFlag:FLAG_を追加した.INCLUDE_STOPPED_PACKAGESとFLAG_EXCLUDE_STOPPED_PACKAGES ,をクリックして、intentが「stopped state」にあるアプリケーションをアクティブにするかどうかを指定します.2つのFlagが設定されていない場合、または設定されている場合、FLAG_が採用されるINCLUDE_STOPPED_PACKAGESの効果.
ユーザーに手動で強制的に停止させることから、つまりユーザーが手動で強制的に停止することを避けるために、タスクマネージャが見ているのは、現在どのプロセスが実行されているのか、appが見えないときは、自分でプロセスを殺します.この動作はonStop()またはonPause()で行います.(このような弊害も明らかです.その後は毎回onCreate()から再開しなければならないからです).
int mypid = android.os.Process.myPid();
		Log.d(TAG, "mypid: " + mypid);
		android.os.Process.killProcess(mypid);

しかし、ユーザーが最も高い選択権を持っているはずなので、それ自体がごろつきの行為です.の