2012-05-02 13 views
0

特定のアクティビティが表示されていない場合にのみ、特定の状況で通知をアプリで起動します。ロック画面がロックされていないことを確認してください

(OnCreate/onDestroyを使用して)アクティビティを作成して破棄したときに、サービスのバインド/バインド解除を行うことができました。このアクティビティがonPause/onResumeメソッドを通じて可視である場合はブール値で保存します。以下のようになります。

public void onCreate(Bundle savedInstanceState) { 
    // ... 
    bindService(...); 
} 

public void onDestroy() { 
    // ... 
    unbindService(mConnection); 
} 

public void onResume() { 
    // ... 
    // this method sets to true the Service's boolean which retain Activity's visibility. 
    mService.registerActivity(true); 
} 

public void onPause() { 
    mService.registerActivity(false); 
} 

サービスでは、通知を開始するにはこのブール値をチェックします。

これは、特定のものを除き、すべてのケースのために働く:アプリがこの活動で開かれているが、ロック画面が有効になっています。私が作ったいくつかの試験で

、ロック画面が表示されたら、Activity.onPauseメソッドが呼び出されます。私は、ロック画面がロック解除されたときにActivity.onResumeメソッドが呼び出されただけで、何が起こっているのではないかと期待していました。電源ボタンを押してロック画面を呼び出すと、Activity.onResumeメソッドが既に呼び出されます。この意味で、私がやっていることは正しいことではありません。

どのように私は、ユーザーがロック画面のロックを解除した場合にのみActivity.onResumeメソッドが呼ばれるようにすることができますか?または...ロック画面がロックされておらず、ユーザーが本当にアクティビティを見ていることを確認するにはどうすればよいですか?

+1

'Activity.onWindowFocusChanged(boolean hasFocus)'は必要な値を返しますか? – techiServices

+0

@techiServicesありがとう!これは完璧に機能しました。しかし、私はこの "答え"を受け入れることはできません。私はそれを受け入れることができるように質問に答えてください。 OK? – borges

+0

回答しました。どうもありがとう。 – techiServices

答えて

5

Activity.onWindowFocusChanged(boolean hasFocus)は、画面のロックが解除された後、あなたのActivity回復にフォーカスするたびにtrueを返す必要があります。

0

2思考、テストされていないと私はまだアンドロイドのnoobのようなものだ:次に

ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
List<RunningAppProcessInfo> list2 = am.getRunningAppProcesses(); 

、このリストから、あなたの活動をフィルタリングし、それの重要性プロパティを確認してください。それがまだ100の場合は、ロック画面がその前にある場合、それは100のフロント実行しているアプリは、わからない。

または、画面がロックされた場合は、これまで秒xはどうするか、実行中のプロセスを作成し、そして、それが再びロック解除だ時に何かをすることができます。

関連する問題