onStop,onResume,Onpause函数未运行

时间:2017-01-08 11:07:22

标签: java android

我想更新用户使用应用程序的状态。

如果应用程序位于前台,则状态必须在线。否则,如果应用程序在后台运行,则状态必须处于脱机状态。我使用?- 1 + 2 @< 1 - 2. true. 来计算后台任务。当我使用<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="fill_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="fill_parent"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="50dp" android:background="#E74E4C" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="167dp" /> <ImageView android:id="@+id/imagetwo" android:layout_width="match_parent" android:layout_height="250dp" android:layout_below="@id/button" android:layout_margin="16dp" android:scaleType="centerCrop" android:src="@mipmap/ic_launcher" /> <ImageView android:id="@+id/imageone" android:layout_width="match_parent" android:layout_height="250dp" android:layout_below="@id/imagetwo" android:layout_margin="16dp" android:scaleType="centerCrop" android:src="@mipmap/ic_launcher" /> </RelativeLayout> </ScrollView> AsyncTaskonStop方法时,后台活动会挂起UI线程。

onResume

3 个答案:

答案 0 :(得分:0)

方法是挂起你的UI,你可以通过Thread使用它们:

实施例

new Thread(new Runnable(){

//Your method or code

}).start();

答案 1 :(得分:0)

你的onPause,onResume,onStop ......这些方法应该在你的活动类中,而不是你的asynctask。

如果您查看文档,则活动可以覆盖这些方法,https://developer.android.com/reference/android/app/Activity.html

Asynctask没有这样的方法,这就是为什么它不起作用。 https://developer.android.com/reference/android/os/AsyncTask.html

答案 2 :(得分:0)

试一试:

private void doOffline() {
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            // TODO: offline
        }
    }, 1000); // delay 1 second
}

private void doOnline() {
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            // TODO: online
        }
    }, 1000); // delay 1 second
}

@override
protected void onStart() {
    super.onStart();
    doOnline();
}

@override
protected void onResume() {
    super.onResume();
    doOnline();
}

@override
protected void onPause() {
    super.onPause();
    doOffline();
}

@override
protected void onStop() {
    super.onStop();
    doOffline();
}