相关疑难解决方法(0)

以编程方式重新启动/重新创建活动?

在我的数据库中进行一些更改后,我的视图发生了重大变化,我想重新绘制,重新执行onCreate.

怎么可能?

android

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

如何以编程方式"重启"Android应用程序

我正在尝试在我的应用程序中创建一个"注销"功能.基本上,通过注销,应清除应用程序数据.我想要做的是在注销后,应用程序应该重新启动,以便可以再次输入凭据等.我遇到的问题是,当用户单击"注销"时,应用程序已经运行了3-4个活动,我不知道如何退回它们.我如何(模拟?)重新启动应用程序?

android

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

即使活动已经销毁,AsyncTask也不会停止

我有一个AsyncTask对象,它在创建活动时开始执行,并在后台执行操作(下载最多100个图像).一切都很好,但有一种我不能理解的特殊行为.

例如:当Android屏幕的方向发生变化时,活动将被销毁并再次创建.所以我重写onRetainNonConfigurationInstance()方法并保存在AsyncTask中执行的所有下载数据.我这样做的目的是每次在方向更改期间销毁活动时都不会运行AsyncTask,但正如我在日志中可以看到的,之前的AsyncTask仍然在执行.(虽然数据保存正确)

我甚至尝试在活动的onDestroy()方法中取消AsyncTask,但日志仍然显示AsyncTask正在运行.

这是非常奇怪的行为,如果有人能告诉我停止/取消AsyncTask的正确程序,真的很感激.

谢谢

android android-asynctask

72
推荐指数
2
解决办法
7万
查看次数

强制应用程序重新启动第一个活动

由于未知原因,我无法正确地离开应用程序,因此当我再次按下主页按钮和应用程序图标时,我会恢复应用程序中的位置.我想强制应用程序在第一个Activity上重新启动.

我想这与onDestroy()或者onPause()有关,但我不知道该怎么做.

android

68
推荐指数
4
解决办法
9万
查看次数

颤动:如何强制重启应用程序(在生产模式下)?

生产模式中,有没有办法强制完全重启应用程序(我不是在讨论开发时的热重载!).

实际使用案例:

  • 在初始化过程中,应用程序检测到没有网络连接.缺乏网络连接可能阻止了正确的启动(例如加载外部资源,如JSON文件......).

  • 在最初的握手过程中,需要下载一些重要资源的新版本(更新类型).

在这两种用例中,我希望应用程序继续完全重启,而不是必须在ApplicationState级别构建复杂的逻辑.

非常感谢您的提示.

flutter

25
推荐指数
9
解决办法
9697
查看次数

如何在我的活动上提供屏幕覆盖权限

在我的应用程序中我得到Android 6+中的屏幕覆盖问题我试图打开但是为此我需要为屏幕覆盖提供权限

我跟着这个我无法融入我的活动

我也试过两个似乎都在工作,所以我想在我的活动中整合它们

这是我的活动:

public class MainActivity extends Activity {

    public static final int R_PERM = 123;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.data);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        if ((CheckPermission(this, Manifest.permission.CAMERA)) &&
                (CheckPermission(this, Manifest.permission.READ_PHONE_STATE)) &&
                (CheckPermission(this, Manifest.permission.NFC))) {
            PermHandling();
        } else {
            RequestPermission(MainActivity.this, Manifest.permission.CAMERA, R_PERM);
            RequestPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE, R_PERM);
            RequestPermission(MainActivity.this, Manifest.permission.NFC, R_PERM);

            //NewPermHandling();
        }

    }

    private void PermHandling() {
        //My app internal parts....
        //Here my stuff works...
    }

    //private void NewPermHandling(){

    //}

    @Override
    public void onRequestPermissionsResult(int permsRequestCode, String[] …
Run Code Online (Sandbox Code Playgroud)

android android-6.0-marshmallow

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

启动时的Android引脚活动

我有一个应用程序将自己注册为默认启动器并在启动时自动固定.

安装应用程序时一切正常.它自己固定,只有后退按钮可见.

问题是当设备首次启动时,它无法正确固定.我多次看到一系列祝酒词"Screen pinned"和"Screen unpinned"."主页"和"近期任务"按钮仍然可见.

-

运行"adb shell dumpsys活动活动" - 最后一行表示它没有固定:

mLockTaskModeState=NONE mLockTaskPackages (userId:packages)=
0:[com.example.myapp]
mLockTaskModeTasks[]
Run Code Online (Sandbox Code Playgroud)

-

测试设备华硕ZenPad运行Marshmallow/6.0/23

我依靠MainActivity清单属性"lockTaskMode"来固定(而不是activity.startLockTask()):

<activity
    android:name=".MainActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:label="@string/launcher_main"
    android:launchMode="singleTask"
    android:lockTaskMode="if_whitelisted"
    android:screenOrientation="landscape">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

任何帮助或指示将不胜感激

android android-launcher device-owner

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

如何修复以编程方式检测到的屏幕叠加

在我的应用程序中,我要求允许访问Android SDK 23中的SMS(运行时权限),但问题是显示对话框屏幕覆盖并且未授予访问权限.i禁用所有其他应用程序覆盖但没有任何更改.我找到了这个 链接,但没有帮助

问题是如何以编程方式修复它?

android android-6.0-marshmallow

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

如何以编程方式重新启动Android应用程序

我想通过待处理意图重新启动我的应用程序。下面的代码不起作用。

val intent = Intent(this, Activity::class.java).apply {
     flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
}
val pendingIntentId = 1
val pendingIntent = PendingIntent.getActivity(this, pendingIntentId, intent, PendingIntent.FLAG_CANCEL_CURRENT)
val mgr = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val timeToStart = System.currentTimeMillis() + 1000L
mgr.set(AlarmManager.RTC, timeToStart, pendingIntent)
exitProcess(0)
Run Code Online (Sandbox Code Playgroud)

目标版本是 31,因此更新了未决意图,但PendingIntent.FLAG_MUTABLE仍然不起作用。我搜索了许多与此相关的链接,但没有运气。

以编程方式重新启动 Android 应用程序

强制应用程序在第一个活动时重新启动

https://www.folkstalk.com/tech/restart-application-programmatically-android-with-code-examples/#:~:text=How%20do%20I%20programmatically%20restart,finishes%20and%20automatically%20relaunches% 20us.%20%7D

2022 年 11 月,当目标版本为 31 且最低 sdk 版本为 29 时,上述待处理意图代码不会重新启动应用程序。

除了重新启动活动之外,还有为什么上述未决意图不起作用的任何线索或任何其他建议吗?我不想使用重新启动startActivity(intent)

android alarmmanager android-pendingintent

8
推荐指数
1
解决办法
3714
查看次数

以编程方式重新启动Android应用

这是对这个问题的后续问题:

强制应用程序重新启动第一个活动

我试图从像这样的片段重新启动我的应用程序:

    Toast.makeText(getActivity(), "Restarting app", Toast.LENGTH_SHORT).show();
    Intent i = getActivity().getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getActivity().getBaseContext().getPackageName() );
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
    getActivity().finish();
Run Code Online (Sandbox Code Playgroud)

代码什么也没做.这finish()是唯一有用的原因.如果我删除finish(),没有任何反应.这是为什么?

android android-intent

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