Suppose I am running two applications at a time on android
Does the Logcat 开发者_Go百科log when i shift from one application to other? What does that message look like?
I believe that anything an application logs will be written to logcat. It will not look any different than if it was in the foreground.
However, remember that applications know when they are not in the foreground, so they probably won't output the same messages to logcat as they would if they were in the foreground.
Edit:
In response to how an application knows when it's in the foreground.
public class MyActivity extends Activity {
private boolean isInForeground;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
isInForeground = true;
}
protected void onStart();
protected void onRestart();
protected void onResume() {
isInForeground = true;
}
protected void onPause();
protected void onStop() {
isInForeground = false;
}
protected void onDestroy();
}
From Google (http://developer.android.com/reference/android/app/Activity.html)
The entire lifetime of an activity happens between the first call to onCreate(Bundle) through to a single final call to onDestroy(). An activity will do all setup of "global" state in onCreate(), and release all remaining resources in onDestroy(). For example, if it has a thread running in the background to download data from the network, it may create that thread in onCreate() and then stop the thread in onDestroy().
The visible lifetime of an activity happens between a call to onStart() until a corresponding call to onStop(). During this time the user can see the activity on-screen, though it may not be in the foreground and interacting with the user. Between these two methods you can maintain resources that are needed to show the activity to the user. For example, you can register a BroadcastReceiver in onStart() to monitor for changes that impact your UI, and unregister it in onStop() when the user an no longer see what you are displaying. The onStart() and onStop() methods can be called multiple times, as the activity becomes visible and hidden to the user.
The foreground lifetime of an activity happens between a call to onResume() until a corresponding call to onPause(). During this time the activity is in front of all other activities and interacting with the user. An activity can frequently go between the resumed and paused states -- for example when the device goes to sleep, when an activity result is delivered, when a new intent is delivered -- so the code in these methods should be fairly lightweight.
There is no guarantee that anything will be displayed in the logcat. You'll have to put log messages in your code to make it happen.
精彩评论