服务停止从设置清除数据(Service stops on clearing data from se

2019-10-20 13:49发布

在我的应用我跑中,我保持来电记录和传出呼吁文本文件(保存它的内部存储空间)使用broadcastReciever服务 。 但是当我按下清除数据按钮(设置=>应用程序=> MYAPP =>明确数据)我的服务也停止。 我用Log.d()onDestroy()方法,但它不是在logcat的登录当我按下clear data 。 我看这个问题有同样的问题,但我没有找到任何解决方案。 然后,我经历了开发人员指南 。 我真的很困惑。

Answer 1:

数据相关的应用程序将不再坚持清算。 为了避免这种情况,你需要签署您的应用程序作为一个系统的应用。

清除数据并终止该应用,并始终。

“强制停止”已经通过意义的各种迭代了。 它用来指只杀死所有的进程和服务,并清除数据也会做同样的强制停止。 还有人建议不如搞清楚时禁用按钮,这可能是为什么你看到它停留在2.2启用了良好的平台较旧的迭代。

然而,在3.2,我相信“强制停止”变化的意思把应用程序的状态下,将无法运行,直到用户做了一些明确启动它(如发射器启动它,选择它作为输入法等)。 当该修改是,“清除数据”继续只杀死进程,并停止其服务,所以使按键保持启用该应用程序是不是在完全停止状态。

编辑:工作的代码示例:

Step 1) Create one Android BroadCastReciever and register it for two action

Manifest

    <service android:name="ServiceTest" >
    </service>

    <receiver android:name="ReceiverCall" >
        <intent-filter>
            <action android:name="com.android.techtrainner" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>
com.android.techtrainner is the custom action. BroadCastReceiver Class contain code to restart service again

public class ReceiverCall extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i("Service Stops", "Ohhhhhhh");
        context.startService(new Intent(context, ServiceTest.class));;
    }

}
Step 2) Create Android service class , do some task there (I have taken one Timer to print Log) and in onDestory()

public void onDestroy() {
    try {
        mTimer.cancel();
        timerTask.cancel();
    } catch (Exception e) {
        e.printStackTrace();
    }
    Intent intent = new Intent("com.android.techtrainner");
    intent.putExtra("yourvalue", "torestore");
    sendBroadcast(intent);
}


文章来源: Service stops on clearing data from settings