相关疑难解决方法(0)

在Android活动上调用finish()实际上并没有完成

我在打电话,finish()但我的活动一直在继续.

我有一个活动,由主活动屏幕中的菜单调用.在我的activity的onCreate()方法中,我有以下代码片段:

    // Make sure there are some events in the list.
    if (theEventArrayList.isEmpty()){
        Toast.makeText(this, "Event List is empty", Toast.LENGTH_LONG).show();
        finish();
    }
    SummarizeCurrentEvent();
    graphEvents();
Run Code Online (Sandbox Code Playgroud)

如果列表为空,则会显示Toast,我可以在调用时设置断点finish().如果我从调试器中的那个步骤开始直接进入SummarizeCurrentEvent().我以为finish()会退出活动.这不是这种情况吗?我在哪里可以找到有关此方法的更多信息?

android

50
推荐指数
2
解决办法
5万
查看次数

强制关闭时活动重新启动

我有一个具有单个根Activity的应用程序.我最近引起了我的注意,任何一种强制关闭我的活动导致它重新启动,我不知道为什么会发生这种情况.如果我强制执行未捕获的异常或使用"长按后强制关闭"选项,它们都会产生相同的结果.

我唯一的猜测是某种形式的怪癖与保留对Activity的某些部分的引用有关,只有我在应用程序级别没有任何一些WeakReference条目.

相关的logcat条目:

05-25 08:25:49.137: INFO/ActivityManager(18449): Displayed uk.co.randomicon.rstb/.TreeBuilderActivity: +8s82ms
05-25 08:25:54.222: DEBUG/dalvikvm(18546): GC_EXPLICIT freed 12K, 57% free 3640K/8327K, external 8323K/10136K, paused 72ms
05-25 08:25:55.373: WARN/InputManagerService(18449): Got RemoteException sending setActive(false) notification to pid 19122 uid 10069
05-25 08:25:59.217: DEBUG/dalvikvm(18646): GC_EXPLICIT freed 128K, 48% free 2980K/5703K, external 0K/0K, paused 67ms
05-25 08:26:00.238: DEBUG/dalvikvm(18991): GC_CONCURRENT freed 343K, 51% free 2794K/5639K, external 303K/532K, paused 3ms+3ms
05-25 08:26:02.950: INFO/Process(18449): Sending signal. PID: 19554 SIG: 9
05-25 08:26:02.980: INFO/ActivityManager(18449): Process uk.co.randomicon.rstb (pid 19554) has died.
05-25 …
Run Code Online (Sandbox Code Playgroud)

crash android kill activity-stack android-activity

12
推荐指数
1
解决办法
1万
查看次数

除非在授予权限后重新启动应用程序,否则无法写入外部存储

即使在运行时授予了WRITE_EXTERNAL_STORAGE,App也无法写入Android 6.0上的外部存储(我在模拟器上进行测试); 除非应用程序被杀死并重新启动.

来自AndroidManifest.xml的代码段

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

的build.gradle

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"

defaultConfig {
    ......
    minSdkVersion 15
    targetSdkVersion 23
}
Run Code Online (Sandbox Code Playgroud)

每当我需要写入外部存储器(用于备份)时,我会检查是否有权限.

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                    getActivity().getBaseContext().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_RW_EXTERNAL_STORAGE);
                mPendingAction = PendingAction.Backup;
            } else {
                BackupRestoreService.startBackup(getActivity().getBaseContext());
            }
Run Code Online (Sandbox Code Playgroud)

我也有以下内容

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        Log.d("SettingsActivity", "grantResultsLength: " + grantResults.length);
        if (requestCode == PERMISSION_REQUEST_RW_EXTERNAL_STORAGE) {
            Log.d("SettingsActivity", "grantResultsLength: " + grantResults.length);
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) …
Run Code Online (Sandbox Code Playgroud)

android android-permissions android-6.0-marshmallow

9
推荐指数
1
解决办法
2897
查看次数