Android活动是否有一些选项可以知道用户可见的秒数
或者我必须使用 onCreate,onStart,onResume,onPause,onStop,onRestart,onDestroy 来计算可见的每一秒。
答案 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
,现在可以将其保存到数据库或文件中或所需的任何位置。