Android 通过<;应用>;标记类
我有一个有50个活动的Android应用程序,我不会在log cat中跟踪当前正在运行的活动,而是在所有活动中创建ActivityManger或在每个活动中调用实例对象Android 通过<;应用>;标记类,android,Android,我有一个有50个活动的Android应用程序,我不会在log cat中跟踪当前正在运行的活动,而是在所有活动中创建ActivityManger或在每个活动中调用实例对象 我的想法是创建一个非活动类,并将其附加到Manifest.xml中的标记中,以便它能够跟踪所有活动。您可以创建一个Android服务并从那里打印当前活动。 例如,以下服务将以0.7秒的超时无限期运行,并将当前活动打印到LogCat: public class MyService extends Service { public
我的想法是创建一个非活动类,并将其附加到Manifest.xml中的标记中,以便它能够跟踪所有活动。您可以创建一个Android服务并从那里打印当前活动。 例如,以下服务将以0.7秒的超时无限期运行,并将当前活动打印到LogCat:
public class MyService extends Service {
public static final String TAG = "Background Service";
public boolean wait;
public boolean stop = false;
SharedPreferences prefs;
@Override
public IBinder onBind(Intent intent) {
Log.i(TAG, "On bind of service");
return null;
}
@Override
public void onDestroy() {
stop = true;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
(new Thread(new Runnable() {
public void run() {
try {
update();
return;
} catch (Exception exception) {
exception.printStackTrace();
}
}
})).start();
return super.onStartCommand(intent, flags, startId);
}
public void update() {
List list;
String str;
do {
try {
Thread.sleep(701L);
} catch (InterruptedException interruptedexception) {
interruptedexception.printStackTrace();
}
list = ((ActivityManager) getSystemService("activity"))
.getRunningTasks(1);
str = ((android.app.ActivityManager.RunningTaskInfo) list.get(0)).topActivity
.getClassName();
Log.d(TAG, str);
} while (!stop);
stopSelf();
}
}
您还可以传递值以在一段时间后停止服务。如果您还想知道如何启动服务,则可以在活动中执行以下操作:
Intent intent = new Intent(this, MyService.class);
startService(intent);
并执行以下操作以停止服务:
stopService(intent);
您可以使用它,并将其放置在
应用程序类中:
public class App extends Application {
public static volatile String currentActivityName;
@Override
public void onCreate() {
super.onCreate();
currentActivityName = "MainActivity";
}
}
从当前运行的每个活动中,设置:
@Override
protected void onResume() {
super.onResume();
App.currentActivityName = "thisActivityName";
}
在manifest.xml中:
<application android:name=".App"
android:label="@string/app_name">
...
</application>
嘿,javanshir,谢谢你的快速回复。如果不起作用,请提供任何参考或样品让我知道。不过,一切都应该正常:)但我不能在暂停时破坏服务,并在简历上唤醒服务。我想你会找到停止服务的方法。我修改了答案,只需添加方法ondestory
并调用stopService(intent)
需要时。是的javanshir我已经在我的服务类中添加了它,但我的问题是调用onPause和onResume类似的活动方法,尽管这些方法在服务类中不可用。我们可以选择在暂停时停止服务,而不是通过Activity50活动停止服务吗?有点不对劲。
String activity = App.currentActivityName;