相关疑难解决方法(0)

如何在Android中以编程方式更改应用程序图标?

是否可以直接从程序中更改应用程序图标?
我的意思是,改变icon.png了在res\drawable文件夹中.
我想让用户从程序中更改应用程序的图标,以便下次他们在启动器中看到之前选择的图标.

android

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

如何知道我的应用何时被杀?

我需要知道用户何时杀死我的应用程序(强制停止).我一直在阅读android生命周期,它具有onStop()onDestroy()功能,这些与用户在我的应用程序上结束的每个活动相关,但不是在用户强制停止或杀死我的应用程序时.

有没有办法知道用户何时杀死应用程序?

android android-lifecycle

59
推荐指数
3
解决办法
5万
查看次数

即使从最近的应用程序中清除了应用程序,也要继

我有一点问题.

在我的应用程序中,在用户成功登录后启动服务.以前,如果应用程序被杀,该服务需要停止.(比如,通过滑动从最近的应用程序列表中删除.)所以我们使用过android:stopWithTask="true".现在我们需要服务按原样运行,即使启动它的任务从最近的应用程序列表中删除.所以我把服务改为包含android:stopWithTask="false".但这似乎不起作用.

相关代码:

这是与服务相关的明显部分:

<service
    android:enabled="true"
    android:name=".MyService"
    android:exported="false"
    android:stopWithTask="false" />
Run Code Online (Sandbox Code Playgroud)

在MyService.java中:

public class MyService extends AbstractService {

    @Override
    public void onStartService() {
        Intent intent = new Intent(this, MyActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
        Notification notification = new Notification(R.drawable.ic_launcher, "My network services", System.currentTimeMillis());
        notification.setLatestEventInfo(this, "AppName", "Message", pendingIntent);
        startForeground(MY_NOTIFICATION_ID, notification);  
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        Toast.makeText(getApplicationContext(), "onTaskRemoved called", Toast.LENGTH_LONG).show();
        System.out.println("onTaskRemoved called");
        super.onTaskRemoved(rootIntent);
    }
}
Run Code Online (Sandbox Code Playgroud)

AbstractService.java是扩展的自定义类Sevrice:

public abstract class …
Run Code Online (Sandbox Code Playgroud)

android android-service

52
推荐指数
3
解决办法
5万
查看次数

区分Android杀死应用程序和用户在最近的应用程序列表上滑动它

我正在开发一个项目,当我在一个特定的Activity上时,我们会显示一个本地粘性通知.当应用程序最小化时也应如此.我必须完成的是在应用程序被杀死时删除本地通知(由于内存不足或由用户通过Android,从最近的应用列表中滑动).

通常onDestroy会在Android使用Activity打开一些空间时调用.在其中一种情况下这很好,但是从最近的应用程序列表中滑动应用程序不会调用onDestroy并且粘滞通知保持不变.

我做的是,我实现了一个空的服务,它将强制onDestroy应用程序被杀死(刷卡和系统杀死),这样我就可以删除我的通知.

但是,我想要做的是区分滑动和系统杀死.

这甚至可能吗?

android android-lifecycle android-activity

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

在销毁应用程序时停止服务

我现在很困惑,关于运行和停止的服务概念:

我想做的事:

  • 在应用程序启动时启动位置服务.

  • 继续获取位置更新并将其存储到共享首选项

  • 应用程序范围的onDestroy中停止服务!

到目前为止,我已经搜索和研究过我们只能做服务的事情(如果我错了,请纠正我):

  • 通过将服务绑定到相关活动/片段/视图来自动停止服务,当它们全部销毁服务时自动取消绑定,这样我们就可以stopself在unbind中调用方法

  • 在onStartCommand中返回START_NOT_STICKY以告诉操作系统,不重新创建它,并创建意图本地服务,在完成某些工作后它将自行销毁.

  • 通过在某种静态范围内声明它的意图并停止onActivityDestroyedApplication类中的服务来手动停止服务[我不确定会发生什么?,每次活动被销毁时,服务会破坏吗?或者它只会在整个应用程序被销毁时销毁?]

无论哪种方式,我有点困惑和打败,一直试图调整我Location service的给定细节2天

service android location

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

永远不会调用Android服务的onTaskRemoved!为什么?

我在最近2天遇到了一个问题,我想点击api并向用户显示Toast当用户从后台任务中刷掉应用程序时,我发现从应用程序从后台删除时service可能会出现这种情况onTaskRemoved.

代码:

MyService.java

public class MyService extends Service {

private static final String TAG = MyService.class.getSimpleName();
Handler mHandler;

@Override
public void onCreate() {
    super.onCreate();
    mHandler = new Handler();
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.d(TAG, "onStartCommand: ");
    mHandler.post(new Runnable() {
        @Override
        public void run() {
            new ToastPoP(MyService.this).showLongToast("Service started");
        }
    });

    return Service.START_STICKY;
}

@Override
public …
Run Code Online (Sandbox Code Playgroud)

android android-service

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

通过滑动杀死App时的回调

我有一个涉及导航的应用程序.如果用户启动导航,则会创建一种"navigationLifecycleManager".它存储在应用程序实例中,以便在配置更改,活动等之间切换时幸免于难.

但是,如果用户"退出"应用程序,我想杀死一些后台线程,将一些次要数据存储到应用程序存储中,依此类推.所以我需要一些钩子告诉我应用程序何时退出.

  1. 导航应该在任何活动生命周期中存活(这就是为什么它仍然在应用程序实例中)
  2. 按下主页按钮后导航应该存在.
  3. 通过按"后退",导航不应该在应用程序结束时继续存在.
  4. 通过将其从"最近的应用程序"列表中滑出来导航时,导航不应该存在.

必须通过覆盖"onPause"并检查"isFinishing"来实现.但这并不能解决最近的应用程序列表中的问题.滑动似乎没有任何东西.无论是"的onPause","的onDestroy",也不是"onTerminate"是所谓的活动/应用.

android android-lifecycle

6
推荐指数
1
解决办法
5290
查看次数

在Android应用被杀死之前如何执行代码

我有一个Android应用程序即使在后台该应用程序也可以连接到当前正在运行同一应用程序的周围设备。

为此,我使用WiF-Direct宣传我当前正在运行所述应用程序的事实。

因此,一旦该应用被终止,我需要停止对此进行宣传。

  • onDestroy() 无法使用,因为不能保证会被调用。
  • onStop()onPause()由于该应用仍在运行,因此无法使用。

我该如何实现?

当前,即使关闭或终止了该应用程序,该服务仍在发布。

android android-lifecycle

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

在android中关闭应用程序时调用哪个方法?

我发现onDestroy()只有在按下后退按钮时才会调用,而不是在使用最近的应用程序(通过按十字或滑动应用程序)或在应用程序管理器中关闭应用程序时调用。

下面是我的代码onDestroy()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            ((ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE))
                    .clearApplicationUserData();
    }
Run Code Online (Sandbox Code Playgroud)

我编写了在onDestroy()调用时删除数据和缓存的代码,所以如果有人按下后退按钮,数据和缓存会清除并且应用程序关闭(而不是进入后台)但是当我从最近的应用程序或应用程序管理器关闭它时数据和缓存仍然存在。

如何在我的应用程序关闭时删除数据?

android

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

在android版本8.0中,我使用工作管理器定期触发广播,但是当我从最近的任务中清除应用程序时,它不起作用

我已安排工作经理定期在特定时间执行任务。但它正在与其他Android版本一起使用,例如25或更低版本。当我在API 28上运行它时,如果我从最近的列表中清除应用程序,它将停止触发广播。

我在活动中安排了这样的工作经理:

 OneTimeWorkRequest mywork = new OneTimeWorkRequest.Builder(MyWorker.class).setInitialDelay(15, TimeUnit.SECONDS).build();
 WorkManager.getInstance().enqueue(mywork);
Run Code Online (Sandbox Code Playgroud)

这是我的工人班:

public class MyWorker extends Worker {
    @NonNull
    @Override
    public Worker.WorkerResult doWork() {
        // Do the work here
        Mylogger.getInstance().printLog("MyWorr","doWork()");
        //fire broadcast from here
        Intent broadcastIntent = new Intent(getApplicationContext(), TimeMatchingBroadcastReceiver.class);
        getApplicationContext().sendBroadcast(broadcastIntent);
        CommonUtils.scheduleWorkManager();
        // Indicate success or failure with your return value:
        return WorkerResult.SUCCESS;

        // (Returning RETRY tells WorkManager to try this task again
        // later; FAILURE says not to try again.)
    }
}
Run Code Online (Sandbox Code Playgroud)

即使关闭或清除所有版本的android上的最新应用程序,我也要执行工作管理器。谢谢。

android android-service android-lifecycle android-jetpack android-workmanager

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