我正在开发一个项目,当我在一个特定的Activity上时,我们会显示一个本地粘性通知.当应用程序最小化时也应如此.我必须完成的是在应用程序被杀死时删除本地通知(由于内存不足或由用户通过Android,从最近的应用列表中滑动).
通常onDestroy会在Android使用Activity打开一些空间时调用.在其中一种情况下这很好,但是从最近的应用程序列表中滑动应用程序不会调用onDestroy并且粘滞通知保持不变.
我做的是,我实现了一个空的服务,它将强制onDestroy应用程序被杀死(刷卡和系统杀死),这样我就可以删除我的通知.
但是,我想要做的是区分滑动和系统杀死.
这甚至可能吗?
我是android的新手.我有基于客户端服务器的应用.服务器每隔一分钟就会继续向客户端发送更新通知,在客户端,我的应用程序会收到这些更新并使用Toast显示它.但现在我的问题是每当我的客户端应用程序进入后台服务器继续发送更新通知,我的客户端显示它就好像应用程序在前台.我没有得到如何检查该应用程序是否在后台运行.
我有一个应用程序,我希望仅当服务的活动在前台(活动)时才更新活动(精确列出活动)
我可以使用ListActivity Intent,但问题是即使它在后台也会引发活动.
我还考虑过在ListAdapter上使用registerDataSetObserver,但是要求更新游标.从外部服务更新光标可能不可行.
我们有一个通用的解决方案吗?
想象一下,我有一个活动A,我从那个开始一个新的活动B.
什么是活动生命周期并排?
1. A: onCreate
2. A: onStart
3. A: onResume
Run Code Online (Sandbox Code Playgroud)
在A => startActivity(B)
4. B: onCreate
5. B: onStart
6. A: onPause
7. B: onResume
8. A: onStop
Run Code Online (Sandbox Code Playgroud)
它是否正确?
我遇到了一个要求,但我无法得到正确的实施方式,因此需要你的帮助.
我想做的事? - 我想根据我得到的通知执行操作如下:
我做了什么?我已经取得了第一点和第二点.我想达到第3点.我试过以下
public static boolean isApplicationBroughtToBackground(final Activity activity) {
ActivityManager activityManager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(1);
// Check the top Activity against the list of Activities contained in the Application's package.
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
try {
PackageInfo pi = activity.getPackageManager().getPackageInfo(activity.getPackageName(), PackageManager.GET_ACTIVITIES);
for (ActivityInfo activityInfo : pi.activities) {
if(topActivity.getClassName().equals(activityInfo.name)) {
return false;
}
}
} catch( PackageManager.NameNotFoundException e) {
return false; // Never happens.
}
}
return true;
} …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Android代码段,以帮助跟踪Android事件作为应用程序开发人员的服务工具.
例如,主应用程序主体可以只显示"hello world".我的代码会听的应用程序事件,如onStart(),onResume(),onDestroy(),等,并保持跟踪这些事件.
当然,代码可以直接插入主活动下.但这意味着我的代码将遍布各个地方.有没有办法,我可以创建一个对象(即一个监听器),并且只请求app开发人员添加1~2个衬垫来使用我的代码?
我正在创建一个带有片段的导航抽屉活动的应用程序。在应用程序每次冷启动时,我都会执行一些初始化代码,并在其中加载以下内容:
这是冷启动时我的应用程序的流程:
在某些非活动状态下将应用程序置于前台后,Android会尝试重新启动当前的活动。这意味着我的初始化代码被绕过并被CoreActivity.onCreate()执行。
我的所有活动(MainActivity除外)都在扩展以下超级活动:
public abstract class MasterActivity extends AppCompatActivity {
@Override
protected final void onCreate(Bundle savedInstanceState) {
this.supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
if (!CrmContext.getInstance().verifyContextSet(this)) {
return;
}
super.onCreate(savedInstanceState);
onCreateAfterContext(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)
在CrmContext中:
public boolean verifyContextSet(final Context context) {
boolean isContextSet = applicationContext != null;
if (isContextSet) {
return true;
}
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
return false;
}
Run Code Online (Sandbox Code Playgroud)
在verifyContextSet()我做一些检查,以确保应用程序已正确加载。如果用户会话未正确加载。
我的问题:
如果该应用程序位于最前面,则将 …
我实际上正在使用此代码来检查onPause中的应用是否会转到后台.
public static boolean isApplicationSentToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService( Context.ACTIVITY_SERVICE );
List<RunningTaskInfo> tasks = am.getRunningTasks( 1 );
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get( 0 ).topActivity;
String name = LockScreenActivity.class.getName();
String topAPN = topActivity.getPackageName();
String conAPN = context.getPackageName();
if (topActivity.getClassName().equals( name ) || !topActivity.getPackageName().equals( context.getPackageName() )) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,Android 4.4一直运行良好.如果现在我检查topAPN和conAPN它们相等(并且它们总是不相等时,应用程序被发送到背景上的Android <= 4.3).
你知道如何解决这个问题吗?有什么变化?
我创建了一个服务,它从一个活动的onCreate开始,并停止在activity的onDestroy方法上.现在我必须从服务的方法中检查活动是否在前台/后台运行(对于某些情况,例如应用程序被强制关闭).我怎样才能做到这一点?
我需要这样做,因为我知道如果任何应用程序被强制关闭或任何类型的崩溃,无法保证调用活动的onDestroy方法.因此,我的活动启动时启动的服务不会在任何崩溃或任何强制关闭事件后停止.
我已经看到了可以检查前台活动的链接.但我需要在任何状态(前景或后台)检查正在运行的活动
我是Android的新手,我需要知道每当App从后台恢复时我需要显示密码锁定屏幕我按照这个链接并且能够得到它但是每当我用来调用相机意图或图库选择意图应用程序将转到后台然后出现锁定屏幕而我需要知道应用程序是否在用户主页按钮按下时达到了背景