假设当前任务堆栈有四个活动实例,A0,A1,B0,C0,堆栈顶部有C0.A0,A1是活动A的实例,B0是活动B的实例,而C0是活动C0的实例.
现在C0用FLAG_ACTIVITY_REORDER_TO_FRONT创建一个intent并启动Activity A:
Intent intent = new Intent(this, A.class);
intent.setFlag(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
我的问题是,哪个实例将被带到前面,A0或A1?任务堆栈是否会变为A0,B0,C0,A1或A1,B0,C0,A0?
谢谢.
我需要从类B的方法(它扩展活动)调用类A的方法(它扩展CCColorLayer).这怎么可能?尝试在B类中为A类创建对象.但它不是解决方案.每次创建不同的图层.请帮忙.
提前致谢.
我有一个SearchAcvitity,它有一个子PersonActivity.每个都是FragmentActivity的.这是我的清单文件:
<activity android:name=".SearchActivity" android:label="@string/search_title">
</activity>
<activity android:name=".PersonActivity" android:label="@string/person_title"
android:parentActivityName=".SearchActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".SearchActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
从SearchFragment,我像这样启动PersonActivity:
Intent i = new Intent(getActivity(), PersonActivity.class);
startActivity(i);
Run Code Online (Sandbox Code Playgroud)
仅此一项就可以在PersonFragment中将面向左侧的插入符号与app图标一起添加.当我按下此图标时,它会重新创建SearchAcvitiy(和片段),因此其先前的状态将丢失.
当我按下PersonFragment中的后退按钮时,它会通过onResume(...)返回SearchActivity的SearchFragment,其状态完好无损.如何通过up动作实现这一目标?
请注意,我不在PersonFragment中进行此调用:
.getActivity()getActionBar()setDisplayHomeAsUpEnabled(真).
我的理解是,现有的“屏幕关闭”和“打开”意图并不完全表示设备分别处于睡眠和唤醒状态。设备上的所有应用程序都拥有部分唤醒锁,设备将不会进入深度睡眠状态,但屏幕可能会关闭/打开。
是否有意图收听CPU“ WAKE UP”和“ SLEEP”?
有什么办法,我们知道CPU从深度睡眠中唤醒了吗?
我知道如果我运行一个程序,它可能会以这样或那样的方式表达:它对每个变量的期望.但是当我阅读Android代码的每一页等时,我想自己决定,例如:
size或length一个android程序期待一个字符串数组?integer或者double,预计是积极的还是消极的?等等
在这方面的帮助将不胜感激.
我正在编写一个小型 android 应用程序,它在设备启动时启动我的服务。应用程序在所有 Android 版本 4.4.2(Mi Note 4G,必须在其安全应用程序中启用权限)、5.0(Lenovo K3 Note)、5.1(一加一)、6(Nexus 5)的手机上运行良好,除了一台运行 Android 5.0 的手机(联想 A1000,启动器类似于 MiUI)。应用程序仅安装在内部存储上。在设备重新启动之前使用/启动应用程序一次。以下是清单和广播接收器文件的摘录
清单.xml:
<receiver android:name="com.company.Broadcast"? android:permission="android.permission.RECEIVE_BOOT_COMPLETED">?
<intent-filter>?
<action android:name="android.intent.action.BOOT_COMPLETED" />?
<category android:name="android.intent.category.LAUNCHER" />?
</intent-filter>?
</receiver>
? <service android:enabled="true" android:exported="false" android:name="com.company.service" />
Run Code Online (Sandbox Code Playgroud)
广播接收器:
public class Broadcast extends BroadcastReceiver {?
private static final String TAG = “BroadcastReceiver";?
@Override?
public void onReceive(Context context, Intent intent) {?
Log.d(TAG, "onReceive");?
Intent service = new Intent(context, Service.class);?
service.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);?
context.startService(service);
? }?
? }
Run Code Online (Sandbox Code Playgroud)
一些预安装的应用程序在启动时可以正常启动,而有些则被跳过。我的应用程序恰好在跳过的应用程序列表中。
以下是设备启动时 logcat 中的一些行,
01-18 17:02:58.933 504-560/? I/PackageManager: Package …Run Code Online (Sandbox Code Playgroud) 我有一个错误,我在更新后得到重复的意图.我所做的更改是开始收听MY_PACKAGE_REPLACED,并重新注册下面的警报,因为我认为在更新应用程序时警报被终止.但是,我确实得到了下面代码中定义的"TriggerPulse"广播的重复.
以下代码是设置警报的唯一代码.但是,它是从多个地方调用的,但就我从文档中收集而言,此代码应该是幂等的(IntentRequestCodes.PULSE_SERVICE是一个设置为1的静态整数).我认为这段代码是幂等的,这是正确的吗?
final Context applicationContext = context.getApplicationContext();
Intent intent = new Intent("TriggerPulse");
final int flags = 0;
PendingIntent pendingIntent =
PendingIntent.getBroadcast(applicationContext, IntentRequestCodes.PULSE_SERVICE, intent, flags);
AlarmManager alarmMgr = (AlarmManager)applicationContext.getSystemService(Context.ALARM_SERVICE);
final int triggerAtMilliseconds = 0; // run first time immediately
alarmMgr.setInexactRepeating(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
triggerAtMilliseconds,
AlarmManager.INTERVAL_HALF_HOUR,
pendingIntent
Run Code Online (Sandbox Code Playgroud)
如果在正常情况下它是幂等的,这是否意味着更新的应用程序正在创建的pendingIntent根本不被认为是旧遗留应用程序正在创建的pendingIntent的匹配,导致警报仍然被重新安排?如果是这样,我可以轻松地解决问题,而不是在MY_PACKAGE_REPLACED上重新创建警报.但是,有多个资源表明需要在该事件上重新注册这些资源,这导致相信在某些时候Android可能就是这种情况.如果是这样,是否有一个截止的Android版本,这种行为被改变了?
android android-intent android-alarms android-pendingintent android-broadcast
我需要存储从 StatusBarNotification 对象获取的 PendingIntent 对象。PendingIntentendingIntent=sbn.getNotification().contentIntent;
这是一个巨大的Android编程问题/错误.
调用finishAffinity()不会关闭我的应用程序.
这可以从以下事实得到证明:
1.即使应用程序从屏幕上消失并且我又回到手机主屏幕,Android Studio调试器仍然会显示"应用程序正在运行".
2.当' 重新启动 '应用程序时,初始活动的数据成员的值保持与应用程序假定" 关闭 " 之前的值相同.
3.如果我在finishAffinity()之后直接调用System.exit(0),则关闭正常,数据成员将重置为其初始默认值.
对这个问题有更大的影响!当我打电话完成()内ActivityA开始另一个后ActivityB,如果我回去ActivityA那么数据成员没有被重置为默认值仍然是旧值.
这一切混乱的,因为我来自C++在当一个类被销毁那么它是我ACTUALLY破坏,与之相关联的所有内存完全释放.
在切换到新活动或尝试退出应用程序时让活动完全删除自身似乎是不可能的.
public class Startup extends AppCompatActivity
{
private static int iStarted = 0;
............
@Override
protected void onActivityResult(int request, int result, Intent data)
{
super.onActivityResult(request, result, data);
if (request == RESULT_EULA_RETURNED)
{
// shutdown
finishAffinity(); // iStarted remains = 1
return;
}
}
..........
@Override
protected void onResume() …Run Code Online (Sandbox Code Playgroud) 我正在开发一个计步器应用程序,在其中计算行走的步数并在午夜将其更新到服务器。我有一个持续运行的服务来完成这一切。
这是我的服务:
public class StepCounterService extends Service implements SensorEventListener, StepListener, WebServiceInterface, GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener, LocationListener {
private static final int SERVICE_ID = 27;
private static final int SEND_SESSION_REQUEST_CODE = 1;
private static final int SEND_ACTIVITY_REQUEST_CODE = 2;
private static final int MAIN_NOTIFICATION_ID = 3;
private static final int SECONDARY_NOTIFICATION_ID = 4;
private LocalBroadcastManager broadcaster;
static final public String STEP_INCREMENT = "com.app.STEP_INCREMENTED";
static final public String SESSION_COMPLETE = "com.app.SESSION_COMPLETE";
static final public String ACTIVITY_COMPLETE = "com.app.ACTIVITY_COMPLETE";
static final public String STEP_INCREMENT_KEY = …Run Code Online (Sandbox Code Playgroud)