活动,片段活动前景时间

时间:2019-06-05 09:26:15

标签: android android-activity android-fragmentactivity

Android活动是否有一些选项可以知道用户可见的秒数

或者我必须使用 onCreate,onStart,onResume,onPause,onStop,onRestart,onDestroy 来计算可见的每一秒。

3 个答案:

答案 0 :(得分:0)

是的。如果要跟踪所有应用程序活动,则可以声明一个抽象活动类,它们都从中扩展,并在上述回调中执行相关的时间跟踪。

public abstract class BaseActivity extends Activity/AppCompatActivity {

    @Override
    protected void onPause() {
        super.onPause();
        //saveTime
    }

    ...
}

public abstract class MainActivity extends BaseActivity {

...

}

答案 1 :(得分:0)

有一个简单的方法,如果您不需要高精度

public class TestImpl implements Application.ActivityLifecycleCallbacks {
    ...
    ...
    @Override
    public void onActivityStarted(Activity activity) {
      //do something here,such as recording time,use differents tag .
    }

    @Override
    public void onActivityPaused(Activity activity) {
       //do something here,such as save the data to the database with your tag .
    }
}

最后,在正确的时间上传数据!

答案 2 :(得分:0)

实际上,您建议的方式是计算活动可见性时间的最合适方法之一。

步骤

onResume内部启动处理程序,如

public void onResume() {
  super.onResume()
  If(mHandler==null){
    mHandler = new Handler()
    mHandler.postDelayed(mRunnable, 1000)
  }
}



Runnable mRunnable = new Runnable() {
   public void run() {
       mCountSeconds++;
       mHandler.postDelayed(this, 1000);
   }
};

现在您可以删除onDestroy内的回调

public void onDestroy() {
  super.onDestroy()

   // Here you can measure time in seconds simple access mCounterSeconds
  If(mHandler != null){ 
    mHandler.removeCallbacks(mRunnable)
  }
  //here you can save counter value into db, sharedprefs, file... 

}

毕竟,您将得到mCountSeconds,现在可以将其保存到数据库或文件中或所需的任何位置。