EDIT* This issue is occurring while testing on a android device. This issue does not appear while testing on a emultor.
I am starting a new activity and I see onPause is called right after onResume is called. If I look at log it goes to Idle after onResume. Therefore causing onPause right after onResume is called.
Caller activity - calling MainActivity on onClick via intent.
public class TestActivity extends AppCompatActivity implements View.OnClickListener{
String TAG = "acr";
Button testBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
testBtn = (Button) findViewById(R.id.testBtn);
testBtn.setOnClickListener(this);
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "on pause called on TestActivity ");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "on resume called on TestActivity ");
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.testBtn:
Intent mainIntent = new Intent(this, MainActivity.class);
TestActivity.this.startActivity(mainIntent);
break;
}
}
}
Activity that has bug
public class MainActivity extends AppCompatActivity{
public static final String TAG = "acrx";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "on pause called on mainactivity");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "on resume Called on Main activity");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "on stop Called on Main activity");
}
}
Log
12-06 23:24:19.751 22983-22983/com.example.m1alesis.smartcardreader I/acrx: on resume Called on Main activity
12-06 23:24:19.751 22983-22983/com.example.m1alesis.smartcardreader D/SecWifiDisplayUtil: Metadata value : SecSettings2
12-06 23:24:19.751 22983-22983/com.example.m1alesis.smartcardreader D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{5ce8491 I.E...... R.....ID 0,0-0,0}
12-06 23:24:19.781 22983-23012/com.example.m1alesis.smartcardreader D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000, [1440x2560]-format:1
12-06 23:24:19.811 22983-22983/com.example.m1alesis.smartcardreader W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
12-06 23:24:19.831 22983-22983/com.example.m1alesis.smartcardreader D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1
12-06 23:24:19.871 22983-23012/com.example.m1alesis.smartcardreader D/OpenGLRenderer: endAllActiveAnimators on 0x7f9c17ec00 (RippleDrawable) with handle 0x7f9ccc8b60
12-06 23:24:19.871 22983-22983/com.example.m1alesis.smartcardreader I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@fa2f707 time:376798424
12-06 23:24:20.131 22983-22983/com.example.m1alesis.smartcardreader V/ActivityThread: updateVisibility : ActivityRecord{e78cff6 token=android.os.BinderProxy@a67fd36 {com.example.m1alesis.smartcardreader/com.example.m1alesis.smartcardreader.TestActivity}} show : false
12-06 23:24:31.561 22983-22983/com.example.m1alesis.smartcardreader I/acrx: on pause called on mainactivity
12-06 23:24:31.701 22983-22983/com.example.m1alesis.smartcardreader I/acrx: on resume Called on Main activity
12-06 23:24:31.721 22983-22983/com.example.m1alesis.smartcardreader I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@fa2f707 time:376810271
I had the same issue and for me it is related to the activity starting up and the screen not being on - I only saw it after I had the screen off (e.g. after touching the power button and then home to resume again).
This is a behaviour that others have seen also - I found this question and answer has useful references: OnPause and OnStop() called immediately after starting activity
The key quote that helped me understand the behaviour was:
Keep in mind that onResume is not the best indicator that your activity is visible to the user; a system window such as the keyguard may be in front. Use onWindowFocusChanged(boolean) to know for certain that your activity is visible to the user
In my case the same issue was caused by ActivityCompat.requestPermissions(this, new String[]{Manifest.permission...);
.
* This method may start an activity allowing the user to choose which permissions
* to grant and which to reject. Hence, you should be prepared that your activity
* may be paused and resumed. Further, granting some permissions may require
* a restart of you application. In such a case, the system will recreate the
* activity stack before delivering the result to your
* {@link OnRequestPermissionsResultCallback#onRequestPermissionsResult(int, String[], int[])}.
This slowed down the app start noticeably.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With