编程语言
首页 > 编程语言> > 如何在android活动中以编程方式触发onPause

如何在android活动中以编程方式触发onPause

作者:互联网

我试图找出如何模拟暂停活动来调试我的应用程序.我希望onPause被调用但不是onStop.我只是想尝试一个暂停恢复周期,我正在寻找一些我可以调用的代码(例如按下按钮后)来触发这个.

有什么想法?

我看到人们建议在其他线程中按下主页按钮,但是当我这样做时,停止应用程序并调用onStop以及onPause,因此它不是我想要的.

解决方法:

摘自link:最简单的方法是在活动之上添加半透明活动.我自己做了测试,并且确实没有调用onStop:

透明活动:

public class TransparentActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.transparent_layout);
    }
}

任何简单的布局都可以用于transparent_layout,但棘手的部分是在Manifest中:

<activity
            android:name=".TransparentActivity"
            android:theme="@style/Theme.Transparent" >
        </activity>

在styles.xml中的位置:

<style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

然后在入门活动中:

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btnNext).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, TransparentActivity.class));
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d("TSTAct", "#onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("TSTAct", "#onStop");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d("TSTAct", "#onResume");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("TSTAct", "#onStart");
    }
}

打开TransparentActivity时,我只能在Logcat中看到:

07-10 23:35:28.323: D/TSTAct(27180): #onPause

没有onStop电话.

标签:android,activity-lifecycle
来源: https://codeday.me/bug/20190714/1454732.html