2016-06-27 11 views
2

アクティビティがonStart()またはonPause()から再開されるかどうかを認識するためのプログラミング方法はありますか?事前にAndroidのライフサイクル - onResumeの後にonStartまたはonPauseがあるかどうかを確認しますか?

Android activity life cycle - what are all these methods for?

感謝。

編集:

質問が不明確な可能性があります。実際には、たとえば、自分のアクティビティがonPauseから再開したときにトーストを表示したいが、onStartではないことを表示したいのですが、可能でしょうか?御時間ありがとうございます。

+0

なぜプログラミング方法が必要でしょうか?チャートを見るだけで、それはあなたに順序を教えてくれます。 –

+0

protected void onCreate(Bundle savedInstanceState){...} savedInstanceStateはそれを見つけるために使われます。あなたの活動を一時停止する前に状態を保存し、onCreateで状態をチェックしてください。 –

+0

@ルーカニコレッティルカのヒントをありがとう。しかし、私が理解しているように、onPauseの後にはonCreateがないので、一時停止する前に状態バンドルに何かを入れることができますか? – PhiVuTru

答えて

0

アクティビティにフラグを設定します。 onPauseではtrueに設定し、onResumeでは値をチェックしてそれに応じてタスクを実行します。 onResumeの最後でフラグをfalseに戻します。

+0

ありがとうございます。これはトリックでした。私は以前これを適用しようとしましたが、それがうまくいかなかった前回の理由、なぜか分かりません。再度、感謝します。 – PhiVuTru

0

あなたが必要と思われるのは、Logクラス(https://developer.android.com/reference/android/util/Log.html)です。 これは、Android Studioのそのチュートリアルです:https://developer.android.com/studio/debug/am-logcat.html

あなたには、いくつかの理由のために、オン方法をトレースするようにそれはそう簡単に書く、と思われる:

protected void onStart() { 
    Log.d("YourTag", "onStart() is called."); 
    super.onStop(); 
} 

protected void onPause() { 
    Log.d("YourTag", "onPause() is called."); 
    super.onPause(); 
} 

か、これは私がトレースに使用するユーティリティメソッドですメソッド:

public static void currentMethod() { 
     Throwable t = new Throwable(); 
     Log.d("SomeTag", "==== " + t.getStackTrace()[1].getClassName() + "#" + t.getStackTrace()[1].getMethodName() 
       + " ===="); 
} 
+0

質問を明確にするために編集しました。 – PhiVuTru

+0

私はあなたの編集の後に答えました、これはあなたが望むものではありませんか?ロギングの使用はトーストより優れています。 –

0

はいアクティビティがonStart()またはonPause()から再開されるかどうかを認識するためのプログラミング方法があります。

/** Called when the activity is first created. */ 

@Override 

public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 

setContentView(R.layout.main); 
///it will come in action after code of display notification function described below 
DisplayNotification("ActivityLifeCycleDemo","onCreate"); 

sleepForaMinute(); 


} 

} 

今、私たちは私たちの活動にさらに2つのサポート機能が追加されます:私はシンプルな通知アプリケーションで、次の午前、それを理解することが

static final int NOTIFICATION_ID = 1776; 

protected void DisplayNotification(String title,String message) 

{ 

NotificationManager notifManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

Notification note = new Notification(R.drawable.icon, title, System.currentTimeMillis()); 

PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(this, ActivityLifeCycleDemo.class), 0); 

note.setLatestEventInfo(this, title, message, intent); 

notifManager.notify(NOTIFICATION_ID, note); 

} 

protected void sleepForaMinute() 

{ 

try 

{ 

Thread.sleep(60000); 

} catch (InterruptedException e) 

{ 

// TODO Auto-generated catch block 

e.printStackTrace(); 

} 

} 

アクティビティを開始すると、Android端末に以下の通知が表示されます。今onDestroy

すべてのリソースがcleanasであることは、次のようにのはonDestroyイベントをオーバーライドしてみましょう

@Override 
protected void onDestroy() { 

super.onDestroy(); 

DisplayNotification("ActivityLifeCycleDemo","onDestroy"); 

} 

のonCreateメソッドで取得し、以前で使用されたそれらのすべてのリソースをクリーンアップする必要がありonDestroy方法今破壊された活動

ONSTART

今すぐ次のようにのはONSTARTメソッドをオーバーライドしてみましょう:

@Override 
protected void onStart() { 
super.onStart(); 
DisplayNotification("ActivityLifeCycleDemo","onStart"); 
sleepForaMinute(); 
} 

今ここ ONSTART法では、あなたが表示され、アニメーションを示すように、あなたの活動のために必要なすべての可視行動を開始する必要がありますユーザーのプロンプトなど onStop さて、次のようにのはonStopメソッドをオーバーライドしてみましょう:

@Override 
protected void onStop() { 
super.onStop(); 
DisplayNotification("ActivityLifeCycleDemo","onStop"); 
} 

onStopメソッドはONSTARTメソッドで開始されたすべてのアクションを停止する必要があります。アクティビティは不可視なので、あなたのアクティビティは、Androidインターフェイスに必要なタスクを実行していてはならず、CPUサイクルを消費してはなりません。 onResume

は今、次のようにのはonResumeメソッドをオーバーライドしてみましょう:

onPause

protected void onResume() { 

super.onResume(); 

DisplayNotification("ActivityLifeCycleDemo","onResume"); 

} 

さて、次のようにのは、onPauseメソッドをオーバーライドしてみましょう:

@Override 
protected void onPause() { 
super.onPause(); 
DisplayNotification("ActivityLifeCycleDemo","onPause"); 
} 

は結論

アンドロイド活動はいくつかの違いがあります一生の間、州を賃貸します。状態とイベントを理解することで、ユーザーのための効率的で反応性の高い方法でアプリケーションをコーディングするのに役立ちます。 Androidオペレーティングシステムは、アクティビティのイベントを呼び出すことで、さまざまなイベントを慎重に開発している限り、アクティビティ自体を非常に効果的に管理できます。だから、あなたの次のAndroidアプリのライフサイクルを管理しながら楽しんでください!

+0

あなたのアンカーから通知(+マネージャー)について学びました。ありがとう@shubham。 – PhiVuTru

+0

私の喜びですが、私はまた、すべてのタイプのアクティビティライフサイクルメソッドのプログラミング方法を説明しました –

関連する問題