小编net*_*ein的帖子

FLAG_ACTIVITY_CLEAR_TOP 和 android:launchMode="singleInstance"

我想我刚刚发现了一个非常奇怪的错误......但这可能只是我从未听说过的某种功能。

在我的应用程序中,当您尝试使用以下代码将堆栈“清理”到某个点时,如果 AndroidManifest 上有任何带有 android:launchMode="singleInstance" 的 Activity:

    Intent intent = new Intent(this, Xpto.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
            | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

它转到该活动。但是当你按回车键时,它又回到了之前的状态。本来应该已经完成​​了......

例子:

A -> B -> C

然后从 CI 中使用 Intent.FLAG_ACTIVITY_SINGLE_TOP| 调用 A Intent.FLAG_ACTIVITY_CLEAR_TOP 在清单上有一个 singleInstance。它转到 A,但仅将其带到前面。并且没有完成C和B。

有人可以解释这种行为吗?

我调用的 Xpto 类当时是堆栈的根活动。

android android-intent android-activity

5
推荐指数
1
解决办法
9299
查看次数

Android ICS活动从淡入/淡出过渡到幻灯片

我有一个应用程序,我在标准活动中使用默认的幻灯片输入/输出效果,并在一些特定的活动上淡入/淡出.

我注意到新的Android 4.X(ICS)有一个不同的默认值,它正是淡入/淡出.

如何在我的标准活动中定义我的幻灯片输入/输出效果?

我一直试图用以下方法来定义它:

@Override
public void onCreate(Bundle savedInstanceState)
{
    this.overridePendingTransition(0, android.R.anim.slide_in_left);                  
    super.onCreate(savedInstanceState);
}

@Override
public void onPause()
{
    super.onPause();
    overridePendingTransition(android.R.anim.slide_out_right, 0);
}
Run Code Online (Sandbox Code Playgroud)

要重现我正在使用的淡入/淡出效果:

@Override
public void onCreate(Bundle savedInstanceState)
{
    this.overridePendingTransition(0, android.R.anim.fade_in);                  
    super.onCreate(savedInstanceState);
}

@Override
public void onPause()
{
    super.onPause();
    overridePendingTransition(android.R.anim.fade_in, 0);
}
Run Code Online (Sandbox Code Playgroud)

但还没有成功地重现它.

另外,我在onCreate和onPause上使用此代码,这是正确的吗?还是有更好的地方可以把它?

谢谢

PS:我在活动之间看到了这个新的Android 4.0屏幕转换,但现在已经提供了答案.

android transitions

5
推荐指数
1
解决办法
4362
查看次数

让一项活动在轮换中被摧毁有什么好处?

我使用了两种方法:

  1. 让活动在轮换时被销毁
  2. 不要让活动在轮换时被破坏

我的方法几乎每次都是捕获旋转事件,如果需要调用setContentView并再次添加一些组件.如果没有,只需让它旋转,布局设计适应.

到目前为止,我只看到了在具有非常动态的非常复杂结构的屏幕上销毁它的优点,并且每当我旋转而不是破坏时,在重新构建屏幕时显示出一些闪烁.

必须通过onSaveInstance,onRestoreInstace传递状态的开销有时非常容易出错,并且不知何故耗时.

我错过了什么吗?

更新:

我的代码中没有"Orientation.XPTO == ...".这是两种方法中的每一种的逻辑(代码被重用):

在摧毁时

onCreate -> DrawUI() setContentView and add views -> fill() add content
Run Code Online (Sandbox Code Playgroud)

不销毁时:

onCreate -> DrawUI() setContentView and add views -> fill() add content
onRotation -> DrawUI() setContentView and add views -> fill() add content
Run Code Online (Sandbox Code Playgroud)

在轮换后调用setContentView时,它将为设备方向选择正确的布局(通过Google的Reto Meier检查此答案/sf/answers/31984291/)

并且DrawUI和fill必须具有纵向和横向布局的逻辑,因为可以在两个方向中的每一个上创建活动以开始.

android rotation

5
推荐指数
1
解决办法
2095
查看次数

Git fetch:Remote不断删除和添加分支

每次我从所有遥控器中取出时,来自另一个用户的遥控器会不断删除分支并再次重新添加:

用修剪取:

git -c diff.mnemonicprefix=false -c core.quotepath=false fetch --prune jcaseiro
From https://my.url.com/jcaseiro/project-android
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/SIMSwap-Master
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/addCheckForNullLinkFragment
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/fixErrorRedirectsPPEScreen
 x [deleted]         (none)     -> jcaseiro/Sprint8/bugfix/fixNullPointerExceptionDropboxInfo
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/Fix_clickable_almost_there_screen
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/PromoTextAlbanianString
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/addCheckForNullLinkFragment
 x [deleted]         (none)     -> jcaseiro/sprint7/bugfix/fixPPEErrorRedirects

 * [new branch]      Sprint7/bugfix/Fix_clickable_almost_there_screen -> jcaseiro/Sprint7/bugfix/Fix_clickable_almost_there_screen
 * [new branch]      Sprint7/bugfix/LogoutNotificationProblem -> jcaseiro/Sprint7/bugfix/LogoutNotificationProblem
 * [new branch]      Sprint7/bugfix/PromoTextAlbanianString -> jcaseiro/Sprint7/bugfix/PromoTextAlbanianString
 * [new branch]      Sprint7/bugfix/addCheckForNullLinkFragment -> jcaseiro/Sprint7/bugfix/addCheckForNullLinkFragment …
Run Code Online (Sandbox Code Playgroud)

git

5
推荐指数
1
解决办法
103
查看次数

如何重置所有活动并启动新活动?

我有一个应用程序,我想以这种方式导航:

A - > B - > C.

并且从C发布了一个名为D的新活动,该活动将进入顶部并清除任务,这意味着如果我按回D,它将进入主屏幕.

如果我理解正确,这个FLAG:FLAG_ACTIVITY_TASK_ON_HOME会这样做......但它只在当前的API上(11>).

我正在为Android 1.5开发>我怎么也有这种行为?

谢谢!

android

3
推荐指数
1
解决办法
2510
查看次数

检查Android应用程序是否位于前台的最佳方法是什么?

我有一个使用AsyncTasks对服务器进行REST调用的应用程序.每当AsyncTask完成时,它都会:显示错误对话框/调用下一个活动(如果应用程序在前台)或什么也不做(应用程序在后台).

我这样做是为了避免在将应用程序发送到后台后弹出一个活动.

我见过一些实现:

  1. 检查android应用程序是否在前台?
  2. 从后台任务或服务确定当前前台应用程序

目前我正在使用另一个,甚至更简单:

  • 每个活动的onResume我将全局变量设置为FOREGROUND
  • onPause每个活动我将全局变量设置为BACKGROUND

你会推荐哪个?

PS我知道这个视频中描述的REST调用的最佳实践https://www.youtube.com/watch?v=xHXn3Kg2IQE&list=PL73AA672847DC7B35,在我的具体情况下,这种方法似乎更合适.

android

3
推荐指数
1
解决办法
4172
查看次数

改造 - >记录到文件

我正在使用自定义记录器来记录Logcat文件和文件(当文件启用时).

这在从测试人员接收错误报告时非常有用(因为我在应用程序内部还有一个按钮,用于发送附带日志的错误报告).

问题:我正在使用RetroFit,但我不知道如何拦截它的日志并使用我自己的自定义记录器将它们发送到文件.

可能吗?

logging android retrofit

3
推荐指数
3
解决办法
1889
查看次数

如何在 RxJava 2 自定义运算符的 onSubscribe 上获取 RetroFit 请求的 URL 和方法?

因此,我尝试集成 Http 请求的 Firebase 性能并手动添加它们,如此处所示步骤 9)。

我正在使用 Retrofit 2 和 RxJava 2,所以我想到了做一个自定义运算符,检查下面的代码:

改造 2 客户端

@GET("branch-{environment}/v2/branches")
    fun getBranch(@Path("environment") environment: String, @Query("location") location: String, @Query("fulfilment_type") fulfilmentType: String): Single<Response<GetBranchResponse>>
Run Code Online (Sandbox Code Playgroud)

RxJava 调用 Retrofit 客户端

private val client: BranchClient = clientFactory.create(urlProvider.apiUrl)

override fun getBranch(postCode: String, fulfilmentType: FulfilmentType): Single<GetBranchResponse> {
        return client
                .getBranch(environment, postCode.toUpperCase(), fulfilmentType.toString())
                .lift(RxHttpPerformanceSingleOperator(URL?, METHOD?))
                .map { it.body() }
                .subscribeIO() //custom Kotlin extension 
                .observeMain() //custom Kotlin extension 
                ...
    } 
Run Code Online (Sandbox Code Playgroud)

RxJava 2 自定义操作符通过 lift:

class RxHttpPerformanceSingleOperator<T>(private val url: String, private val method: …
Run Code Online (Sandbox Code Playgroud)

kotlin firebase retrofit2 rx-java2 firebase-performance

2
推荐指数
1
解决办法
1244
查看次数